import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Edicion extends JFrame
{
JMenu MenuFig, MenuColor, MenuEdita, MenuFactor, MenuAyuda;
JMenuItem Figuras_Circ, Figuras_Cuadro, Figuras_Triang, Figuras_Salir, menuItem;
JMenuItem Color_Rojo, Color_Verde, Color_Azul;
JMenuItem Edit_Mover, Edit_Escala, Edit_Rotar;
JMenuItem Factor_50, Factor_100;
int TipoDibujo = 0, X=0, Y=0, Editar=0;
Color MyColor = Color.black;
Eventos canvas;
public Edicion ()
{
this.getContentPane().setLayout(null); // Contenedor nulo
this.setTitle("TOpicos de la animaciOn"); // Titulo de la ventana
this.setResizable(false); // No es redimensionable
this.setLocation(50, 100); // Posicion
this.setSize(new Dimension(1200, 750)); // Dimensiones
this.toFront();
JMenuBar BarraMenu = new JMenuBar(); // Barra de menU
MenuFig = InsertaMenu("Figuras");
MenuFig.setMnemonic(KeyEvent.VK_A); // Se accesa con Alt-A
InsertaItem(MenuFig, Figuras_Circ, "Circulo", KeyEvent.VK_I); // Se accesa con Alt-N
InsertaItem(MenuFig, Figuras_Cuadro, "Cuadro", KeyEvent.VK_U);
InsertaItem(MenuFig, Figuras_Triang, "Triangulo", KeyEvent.VK_T);
InsertaItem(MenuFig, Figuras_Salir, "Salir", KeyEvent.VK_S); // Se accesa con Alt-S
MenuColor = InsertaMenu("Colores");
MenuColor.setMnemonic(KeyEvent.VK_P); // Se accesa con Alt-P
InsertaItem(MenuColor, Color_Rojo, "Rojo", KeyEvent.VK_T); // Se accesa con Alt-T
InsertaItem(MenuColor, Color_Verde, "Verde", KeyEvent.VK_R); // Se accesa con Alt-R
InsertaItem(MenuColor, Color_Azul, "Azul", KeyEvent.VK_N);
MenuEdita = InsertaMenu("Edicion");
MenuEdita.setMnemonic(KeyEvent.VK_E); // Se accesa con Alt-E
InsertaItem(MenuEdita, Edit_Mover, "Mover", KeyEvent.VK_N);
InsertaItem(MenuEdita, Edit_Escala, "Escalar", KeyEvent.VK_N);
InsertaItem(MenuEdita, Edit_Rotar, "Rotar", KeyEvent.VK_N);
MenuFactor = InsertaMenu("Factor");
MenuFactor.setMnemonic(KeyEvent.VK_F); // Se accesa con Alt-E
InsertaItem(MenuFactor, Factor_50, "50 %", KeyEvent.VK_N);
InsertaItem(MenuFactor, Factor_100, "100 %", KeyEvent.VK_N);
MenuAyuda = InsertaMenu("Ayuda");
JMenuItem Ayuda_Eins = new JMenuItem(new ImageIcon("Einstein_17.jpg"));
Ayuda_Eins.setMnemonic(KeyEvent.VK_E); // Se accesa con Alt-E
MenuAyuda.add(Ayuda_Eins);
BarraMenu.add(MenuFig);
BarraMenu.add(MenuColor);
BarraMenu.add(MenuEdita);
BarraMenu.add(MenuFactor);
BarraMenu.add(MenuAyuda);
setJMenuBar(BarraMenu);
canvas = new Eventos();
canvas.setBounds(0,0,1000,600);
this.add(canvas);
this.setVisible(true);
}
JMenu InsertaMenu(String CAD) { return new JMenu(CAD); }
void InsertaItem(JMenu MENU, JMenuItem ITEM, String CAD, int KEY_EVENT)
{
ITEM = new JMenuItem(CAD);
ITEM.setMnemonic(KEY_EVENT);
MENU.add(ITEM);
ITEM.addActionListener(new Evento_Opciones());
}
public static void main(String R[]) { new Edicion(); }
protected void processWindowEvent(WindowEvent e)
{ if (e.getID() == WindowEvent.WINDOW_CLOSING) System.exit(0); }
class Evento_Opciones implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals("Salir")) System.exit(0);
if (e.getActionCommand().equals("Circulo")) TipoDibujo = 1;
if (e.getActionCommand().equals("Cuadro")) TipoDibujo = 2;
if (e.getActionCommand().equals("Triangulo")) TipoDibujo = 3;
if (e.getActionCommand().equals("Rojo")) MyColor = Color.red;
if (e.getActionCommand().equals("Verde")) MyColor = Color.green;
if (e.getActionCommand().equals("Azul")) MyColor = Color.blue;
if (e.getActionCommand().equals("Mover")) Editar = 1;
if (e.getActionCommand().equals("Escalar")) Editar = 2;
if (e.getActionCommand().equals("Rotar")) Editar = 3;
if (e.getActionCommand().equals("50 %")) canvas.Actualiza(50);
if (e.getActionCommand().equals("100 %")) canvas.Actualiza(100);
canvas.Actualiza(TipoDibujo, MyColor, Editar);
canvas.repaint();
}
}
}
class Eventos extends JPanel implements MouseListener
{
int X=0, Y=0, TipoDibujo=0, Editar=0, Ancho=0, Alto=0;
double Escala=0.0;
Color MyColor;
public Eventos()
{
setBackground(Color.blue);
addMouseListener(this);
Ancho = Alto = 100;
}
void Actualiza(int TipoDibujo, Color MyColor, int Editar)
{
this.TipoDibujo = TipoDibujo;
this.MyColor = MyColor;
this.Editar = Editar;
}
void Actualiza(int Escala) { if (this.Escala != Escala) this.Escala = Escala; Edicion(); }
public void mouseClicked(MouseEvent e){ System.out.println("OK"); X = e.getX(); Y = e.getY(); Edicion(); }
public void mousePressed(MouseEvent e){};
public void mouseReleased(MouseEvent e){};
public void mouseEntered(MouseEvent e){};
public void mouseExited(MouseEvent e){};
void Edicion()
{
if (Editar == 1) { } // MOVER
if (Editar == 2)
{
if (Escala == 50) { Ancho *= .5; Alto *= .5; }
else { Ancho *= 2; Alto *= 2; }
}
repaint();
}
public void paint(Graphics G)
{
int XPoints[] = {X, X-Ancho, X+Alto, X};
int YPoints[] = {Y, Y+Ancho, Y+Alto, Y};
G.setColor(Color.white);
G.clearRect(80, 80, 1000, 600);
G.setColor(MyColor);
switch(TipoDibujo)
{
case 1:
G.drawOval(X, Y, Ancho, Alto);
break;
case 2:
G.drawRect(X, Y, Ancho, Alto);
break;
case 3:
G.drawPolyline(XPoints, YPoints, 4);
break;
}
}
}