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; } } }