Juan Carlos Castro http://consultasjava.tripod.com [email protected] Teoría Utilización de Menús. Para la utilización de menús en una interfaz gráfica con Swing se utilizan las clases JMenuBar, JMenu y JMenuItem. JMenuBar es la barra de menú que estará asociada al JFrame y que contendrá los JMenu. Una manera de crear y establecer la barra de menú es la siguiente: JMenuBar jmb = new JMenuBar(); setJMenubar(jmb); El siguiente paso es añadir los menús a la barra de menús usando instancias de la clase JMenu. El argumento que se pasa en el constructor es la etiqueta que aparecerá en el menú. JMenu menuArchivo = new JMenu(“Mi Menu”); jmb.add(menuArchivo). // se pega el menú a la barra. A continuación se añaden los ítems a cada JMenu, agregándoles el escuchador de eventos. JMenuItem menuItemSalir = new JMenuItem(“salir”); menuItemSalir.addActionListener(this); Fig1. Componentes de un editor de texto. Finalmente se agregan los JMenuItem al menú. menuArchivo.add(menuItemSalir); Los eventos de los JMenuItem, son manejados actionPerformed(ActionEvent) de la interfaz ActionListener. por el método Creación de submenús (menús anidados). La creación de submenús consiste en pegar un JMenu hijo al JMenu padre. A continuación se muestra un ejemplo. Primero se crean los dos menús, el padre contendrá al menú hijo. menuPadre = new JMenu("Menu Padre"); menuHijo = new JMenu("Menu Hijo"); Después se crean los ítems del menú hijo. item1 = new JMenuItem("Menu Item 1"); item2 = new JMenuItem("Menu Item 2"); A continuación se le pegan los ítems al menú hijo. menuHijo.add(item1); menuHijo.add(item2); Finalmente se pega al padre el menú hijo. menuPadre.add(menuHijo); Fig2. Utilización de submenús Cajas de diálogo para abrir o guardar archivo. Swing provee una clase para el manejo de diálogos de archivo. Dicha clase es JFileChooser. JFileChooser permite tanto la elaboración de diálogos para guardar como para salvar. Hay que mencionar que esta clase nada más es una interfaz para elegir archivos o directorios, pero que las funciones de guardar y salvar no están implementadas. JFileChooser tiene un constructor que recibe como argumento el directorio de trabajo. El directorio de trabajo es el directorio donde corre actualmente el programa. Para averiguar el directorio de trabajo se utiliza el método de clase getProperty(String property) de la clase System. Los diferentes String que representan alguna propiedad están definidos en la clase java.lang.System. Por lo tanto un String que contenga el directorio de trabajo puede ser el siguiente: String userDir = System.getProperty("user.dir"); El siguiente paso es crear la instancia de JFileChooser JFileChooser saveDialog = new JFileChooser(userDir); A continuación se muestra el diálogo haciendo uso del método showSaveDialog, el cuál muestra un diálogo para guardar archivo. saveDialog.showSaveDialog(null); Fig3. Cuadro de diálogo para guardar archivo. Después de mostrar el diálogo se debe capturar el archivo elegido. El archivo elegido es una instancia de la clase File. La clase File es del paquete java.io por lo cual es necesario importar este paquete si no ha sido hecho. File selectedFile = saveDialog.getSelectedFile(); Finalmente se imprime el nombre del archivo hacienda uso del método toString() que devuelve una representación en forma de String del objeto File obtenido anteriormente. System.out.println(selectedFile.toString()); Utilización de JColorChooser JFileChooser es un diálogo que permite elegir un color. Para poder elegir un color hay que realizar una serie de pasos. Lo primero es crear una instancia de JColorChooser JColorChooser jcc = new JColorChooser(); A continuación se muestra el selector de colores usando el método showDialog que recibe como argumentos el componente padre, el String que será el título del JFileChooser y finalmente un color inicial. Este método devuelve el color seleccionado. Color c = jcc.showDialog(null,"Seleccione un color",Color.black); Fig4. Cuadro de diálogo para elegir un color. Modificación de las fuentes de un componente. Los componentes tienen fuentes a las cuales se les puede modificar el tipo de letra, el estilo y el tamaño. Para cambiar la fuente de un componente se utiliza el método setFont(Font f) heredado por todos los componentes de la clase Component. Este método recibe un objeto Font que tiene el siguiente constructor: Font(String nombreFuente, int estilo, int tamano). Obtención de las Fuentes del sistema La clase GraphicsEnvironment del awt obtiene las fuentes del sistema con la ayuda del método getAllFonts() el cual devuelve un arreglo de tipo Font. El primer paso es crear un objeto GraphicsEnvironment. GraphicsEnvironment no se puede instanciar por ser una clase abstracta por lo cual se utiliza el método de clase getLocalGraphicsEnvironment(). Este método devuelve un objeto GraphicsEnvironment que contiene información sobre los dispositivos gráficos y las fuentes del sistema. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); El siguiente paso es obtener las Fuentes con getAllFonts(). Fonts misFuentes[] = ge.getAllFonts(); Para tener acceso a alguna de las posiciones del arreglo se utiliza el nombre de la variable del arreglo y un índice así: Font primeraFuente = miArregloDeFuentes[0]; Estilo de la fuente El estilo de la fuente es un entero producto de la suma de variables de clase Font. int estiloNormal = Font.PLAIN; int estiloNegrita = Font.BOLD; int estiloCursiva = Font.ITALIC ; int estiloNormalNegrita = Font.PLAIN+Font.BOLD ; int estiloCursivaNegrita = Font.ITALIC+Font.BOLD ; Teniendo un Component c, se le puede poner una letra Times, estilo cursiva negrita y tamaño 18 así: Font f = new Font(“Times”,estiloCursivaNegrita,18); c.setFont(f); Práctica La práctica consiste en desarrollar una interfaz para un editor de texto. Tendrá como componente a parte de la barra de menús, un JTextArea con barras de desplazamiento donde el usuario podrá digitar el texto. Una barra de menús con los siguientes menús: • Archivo. • Configuración. El menú archivo tendrá los siguientes ítems: • Abrir. Al hacer clic en este ítem se mostrará una caja de diálogo para abrir archivo. • Guardar: Al hacer clic en este ítem se mostrará una caja de diálogo para guardar archivo. • Salir: Al hacer clic en este ítem se cerrará la aplicación. El menú de configuración tendrá los siguientes ítems: • Cambiar color de fondo: Cambia el color de fondo del componente de texto. Usar JColorChooser. • Cambiar el color de frente: Cambia el color del texto que se muestra en pantalla. Usar JColorChooser. • Cambiar el tamaño de la letra. Tres tamaños: o Pequeño: 10 o Normal: 12 o Grande: 14 o Muy Grande: 18 Otras clases que deben utilizar: java.awt.Font Otros métodos que deben utilizar: setBackground(Color), setForeground(Color), setFont(Font f). Observaciones • • La parte teórica asume conocimientos previos del estudiante en tanto a manejo de eventos y orientación a objetos (herencia, uso de instancias y de interfaces, invocación de métodos). Se recomienda al estudiante investigar en el API de Java sobre otras clases, constructores y métodos de las clases mencionadas en este documento.