import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Editor extends JFrame { JMenu MenuArchivo, MenuAyuda; JMenuItem Archivo_Nuevo, Archivo_Salir, Ayuda; AreaEditable AE; public Editor () { this.getContentPane().setLayout(null); // Contenedor nulo this.setTitle("Editor 1.0"); // Titulo de la ventana this.setResizable(true); // Si es redimensionable this.setLocation(100, 100); // Posicion this.setSize(new Dimension(600, 450)); // Dimensiones this.toFront(); JMenuBar BarraMenu = new JMenuBar(); // Barra de menU MenuArchivo = InsertaMenu("Archivo"); MenuArchivo.setMnemonic(KeyEvent.VK_A); // Se accesa con Alt-A InsertaItem(MenuArchivo, Archivo_Nuevo, "Nuevo", KeyEvent.VK_N); // Se accesa con Alt-N InsertaItem(MenuArchivo, Archivo_Salir, "Salir", KeyEvent.VK_S); // Se accesa con Alt-S MenuAyuda = InsertaMenu("Ayuda"); MenuAyuda.setMnemonic(KeyEvent.VK_Y); // Se accesa con Alt-Y InsertaItem(MenuAyuda, Ayuda, "Acerca de", KeyEvent.VK_A); // Se accesa con Alt-A BarraMenu.add(MenuArchivo); BarraMenu.add(MenuAyuda); setJMenuBar(BarraMenu); AE = new AreaEditable(); AE.setBounds(10, 10, 550, 390); getContentPane().add(AE); AE.addMouseListener(new EventoRaton()); this.show(); } 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 Editor(); } 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("Nuevo")) { } if (e.getActionCommand().equals("Acerca de")) JOptionPane.showMessageDialog(null, "Autor: J. Rafael R. Ochoa\nSID - FIE - UMSNH\nJunio del 2004", "Animación Versión 2", JOptionPane.INFORMATION_MESSAGE); } } class EventoRaton implements MouseListener { public void mouseEntered(MouseEvent e) {} // no me interesa public void mouseExited(MouseEvent e) {} // no me interesa public void mousePressed(MouseEvent e) {} // no me interesa public void mouseReleased(MouseEvent e) {} // no me interesa public void mouseClicked(MouseEvent e) { String boton = ""; switch (e.getButton()) { case MouseEvent.BUTTON1: boton = "izquierdo"; break; case MouseEvent.BUTTON2: boton = "centro"; break; case MouseEvent.BUTTON3: boton = "derecho"; break; } AE.setText("Area " + boton); } } } class AreaEditable extends TextArea // implements ActionListener, KeyListener { PseudoCodigo PC; public AreaEditable() { PC = new PseudoCodigo(this); // PC.addMouseListener(new Evento()); } class Evento implements MouseListener { public void mouseEntered(MouseEvent e) {} // no me interesa public void mouseExited(MouseEvent e) {} // no me interesa public void mousePressed(MouseEvent e) {} // no me interesa public void mouseReleased(MouseEvent e) {} // no me interesa public void mouseClicked(MouseEvent e) { setText("Puntos"); } } } class PseudoCodigo extends Thread { Thread Hilo; String Prompt = "<...>"; String Contenido = ""; AreaEditable AE; public PseudoCodigo(AreaEditable AE) { this.AE = AE; start(); } public void run( ) { boolean TipoPrompt = true; while(true) { try { Thread.sleep(200); } catch(InterruptedException r) { } if (TipoPrompt) { Prompt = "<...>"; TipoPrompt = false; } else { Prompt = "{...}"; TipoPrompt = true; } AE.setText(Prompt); } } }