/**
* Javier Abell�n, 24 Mayo 2006
*
* Programa de prueba con main y applet de PanelPaint
*/
package gafetes.modules.sign.pruebas;
import java.awt.BorderLayout;
import java.awt.Graphics2D;
import java.awt.Color;
import javax.imageio.ImageIO;
import java.awt.Component;
import javax.swing.JComponent;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JApplet;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.WindowConstants;
import java.awt.image.*;
import java.io.*;
import gafetes.modules.sign.PanelPaint;
/**
* Clase para prueba de PanelPaint
*
* @author Chuidiang
*
*/
public class PruebaPaint extends JPanel
{
/**
* serial uid
*/
private static final long serialVersionUID = 3690194364970250292L;
/**
* Inatancia esta clase y llama al m�todo que la lanza en un JFrame.
* @param args
*/
public static void main(String[] args)
{
//javax.swing.JDialog d = new javax.swing.JDialog(new javax.swing.JFrame(), true);
new PruebaPaint().lanzaVentanaSeparada();
}
/**
* Crea un JFrame, le mete una barra de herramientas y un PanelPaint y lo
* visualiza todo
*
*/
public void lanzaVentanaSeparada()
{
JFrame v = new JFrame();
construyeTodo(v.getContentPane());
v.setSize(200, 200);
//v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
v.setVisible(true);
}
/**
* M�todo que inicializa el applet. Mete dentro del applet la barra de
* herramientas y el PanelPaint
*/
public void init()
{
construyeTodo(this);
}
/**
* Inicilaiza las variables de esta clase.
*/
private void inicializaVariables()
{
cadenasColor = new String[] { "Rojo", "Verde", "Azul", "Blanco",
"Negro" };
colores = new Color[] { Color.red, Color.green, Color.blue,
Color.white, Color.black };
}
/**
* Inicializa las variables, construye la barra de herramientas y el
* PanelPaint y lo mete todo en el contenedor que se le pasa.
* @param contenedor
*/
private void construyeTodo(Container contenedor)
{
inicializaVariables();
contenedor.setSize(200, 200);
contenedor.setLayout(new BorderLayout());
panelPaint = new PanelPaint();
panelPaint.setBackground(Color.white);
contenedor.add(panelPaint, BorderLayout.CENTER);
Component panelHerramientas = damePanelHerramientas();
contenedor.add(panelHerramientas, BorderLayout.NORTH);
}
/**
* Construye la barra de herramientas y la devuelve.
* @return La barra de herramientas
*/
private Component damePanelHerramientas()
{
JPanel panelHerramientas = new JPanel(new FlowLayout());
ButtonGroup grupo = new ButtonGroup();
JRadioButton botones[] = new JRadioButton[cadenasColor.length];
for (int i = 0; i < cadenasColor.length; i++)
{
botones[i] = new JRadioButton(cadenasColor[i]);
botones[i].setActionCommand(cadenasColor[i]);
grupo.add(botones[i]);
panelHerramientas.add(botones[i]);
botones[i].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
for (int i = 0; i < cadenasColor.length; i++)
if (cadenasColor[i].equals(e.getActionCommand()))
{
panelPaint.setColorActual(colores[i]);
break;
}
}
});
}
checkArrastrar = new JCheckBox("Arrastrar");
checkArrastrar.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (checkArrastrar.isSelected())
{
panelPaint.modoArrastrar();
guardar();
} else
panelPaint.modoPintar();
}
});
panelHerramientas.add(checkArrastrar);
return panelHerramientas;
}
private void guardar(){
File f = new File("c:\\Gafetes\\fotos\\lola.png");
guardarImagen(f,this);
}
public void guardarImagen(File file, JComponent c){
int width = (int) c.getSize().getWidth();
int height = (int)c.getSize().getHeight();
BufferedImage bi = new BufferedImage(200,200,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bi.createGraphics();
c.paint(g2d);
g2d.dispose();
RenderedImage ri = bi;
try{
ImageIO.write(ri,"jpg",file);
}catch(IOException ios){
// System.out.println("Error"+ios.printStackTrace());
}
return;
}
/**
* Texto para los colores
*/
private String[] cadenasColor = null;
/**
* Colores
*/
private Color[] colores = null;
/**
* Panel de dibujo estilo paint
*/
private PanelPaint panelPaint;
/**
* Check para decidir si arrastrar o pintar los trazos
*/
private JCheckBox checkArrastrar;
}