Universidad de Costa Rica CI-0202 Principios de Informática ECCI II

Anuncio
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
Descargar