Universidad de Costa Rica E.C.C.I. CI-0202 Principios de Informática II Semestre 2009 3er examen parcial Analice el siguiente código: import import import import java.io.*; javax.swing.*; java.awt.*; java.awt.event.*; class Editor extends JFrame implements ActionListener { private int alturaVentana=400; private int anchoVentana=550; private JTextArea areaDeTexto; public static void main(String[] args) { try { // Da a la aplicación una aparencia similar a la del sistema. UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { // manejar excepción } new Editor(); } Editor() { // llama al constructor de JFrame (clase padre). super("Editor"); // coloca la ventana en el centro. this.setLocationRelativeTo(null); this.setLocation(this.getX()-this.alturaVentana/2, this.getY()-this.anchoVentana/2); // objetos para crear menús: JMenuBar menuBar; JMenu menu; JMenuItem menuItem; // Aquí se programa el menú: Pregunta 1. // coloca la barra de menú que acabamos de crear en el programa this.setJMenuBar(menuBar); // establece el tamaño en this.anchoVentana x this.alturaVentana. this.setSize(this.anchoVentana, this.alturaVentana); // obtiene el panel principal de la aplicación. JPanel panelDeAplicación = (JPanel) this.getContentPane(); // establece una diagramación de borde para el panel principal. panelDeAplicación.setLayout(new BorderLayout()); // crea un nuevo panel para los botones. JPanel panelDeBotones = new JPanel(); // establece la diagramación de malla para el panel de botones. panelDeBotones.setLayout(new GridLayout(1, 4)); // crea un arreglo de etiquetas para los botones. String etiquetasDeBotones[] = {"Arial, Negrita, 12", "Verdana, Itálica, 14", "Azul", "Rojo"}; // se crean todos los botones con las etiquetas en el vector de etiquetas. for (int i = 0; i < etiquetasDeBotones.length; ++i) { // crea un botón con la etiqueta i JButton botón = new JButton(etiquetasDeBotones[i]); // le solicito al botón que escuche eventos botón.addActionListener(this); // agrego el botón al panel de botones panelDeBotones.add(botón); } // agrega el panel de botones al panel principal. panelDeAplicación.add(panelDeBotones, BorderLayout.PAGE_START); // inicializa el area de texto this.areaDeTexto = new JTextArea(); // crea la tabla gráfica con barras de desplazamiento panelDeAplicación.add(new JScrollPane(this.areaDeTexto), BorderLayout.CENTER); // hace la interfaz gráfica visible. this.setVisible(true); // dice cuál es la acción a ejecutar cuando se pulsa del botón de cerrar. this.setDefaultCloseOperation(Editor.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent evento) { String comando = evento.getActionCommand(); // aquí se programan los condicionales para los comandos ejecutados en la interfaz de usuario: } protected void nuevo() { // Pregunta 3. } protected void abrir() { JFileChooser fc = new JFileChooser(); Pregunta 2. Universidad de Costa Rica E.C.C.I. CI-0202 Principios de Informática II Semestre 2009 // despliega un diálogo para abrir un archivo int resultado = fc.showOpenDialog(this); if (resultado == JFileChooser.APPROVE_OPTION) { // devuelve un objeto archivo con el archivo seleccionado File archivo = fc.getSelectedFile(); try { // abre el archivo seleccionado para lectura FileInputStream archivoEntrada = new FileInputStream(archivo.getAbsolutePath()); // crea un objeto para leer objetos del archivo ObjectInputStream objetoEntrada = new ObjectInputStream(archivoEntrada); // lee un objeto del archivo Object objeto = objetoEntrada.readObject (); // si el objeto es un String if (objeto instanceof JTextArea) { this.areaDeTexto = (JTextArea) objeto; // crea la tabla gráfica con barras de desplazamiento this.getContentPane().add(new JScrollPane(this.areaDeTexto), BorderLayout.CENTER); // vuelve a "pintar la aplicación" this.getContentPane().validate(); } else { JOptionPane.showMessageDialog(this, "¡Archivo mal formateado!"); } } catch (Exception e) { JOptionPane.showMessageDialog(this, e.toString()); } } else { JOptionPane.showMessageDialog(this,"Usted canceló la apertura del archivo."); } } protected void guardar() { // Pregunta 4. } } Ese código corre un programa con una interfaz como la siguiente: 1. (25 ptos.) Programe el menú. Debe haber una barra de menú, con un menú “Archivo” que debe tener las opciones “Nuevo”, “Abrir”, “Guardar” y “Salir”. Para este ejercicio puede necesitar las siguientes referencias de funciones: JMenuBar: public JMenuBar() public JMenu add(JMenu c) JMenu: Universidad de Costa Rica E.C.C.I. CI-0202 Principios de Informática II Semestre 2009 public JMenu(String s) public JMenuItem add(JMenuItem menuItem) JmenuItem: public JMenuItem(String text) public void addActionListener(ActionListener l) 2. (20 ptos.) Cree el código con condicionales para atrapar los eventos “Nuevo”, “Abrir”, “Guardar”, “Salir”, “Arial, Negrita, 12”, “Verdana, Itálica, 14”, “Azul” y “Rojo”. 3. (10 ptos.) Programe el evento “Nuevo” que limpia el área de texto. La siguiente referencia de función le será útil: JTextArea: public void setText(String t) 4. (25 ptos.) Programe el evento “Guardar”. El código del evento “Abrir” le puede ser múy útil. 5. (10 ptos.) Programe los eventos “Arial, Negrita, 12” y “Verdana, Itálica, 14”. Las siguientes referencias le serán muy útiles: JTextArea: public void setFont(Font f) Font: public Font(String name, int style, int size) Font.BOLD Font.ITALIC 6. (10 ptos.) Programe los eventos “Azul” y “Rojo”. La siguiente referencia será necesaria: JTextArea: public void setForeground(Color fg) Color.BLUE Color.RED