Hola, ¿qué hay? Los ComboBox, son una lista de opciones que permite seleccionar una de las opciones.
Para utilizar los ComboBox se utiliza la
clase JComboBox que dispone de dos métodos: addItem() y getSelectedItem().
El método addItem() nos permite añadir elementos al
desplegables y getSelectedItem() nos devuelve el elemento
seleccionado. Como siempre lo vamos a ver sobre una práctica cuyo código
inicial va a ser el siguiente:
package swing;
import
javax.swing.JFrame;
import
javax.swing.JPanel;
public class ComboBox {
public static void main(String[] args) {
MarcoCombo mimarco = new MarcoCombo();
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoCombo
extends JFrame {
public MarcoCombo(){
setVisible(true);
setBounds(550, 300, 550, 400);
LaminaCombo milamina = new LaminaCombo();
add(milamina);
}
}
class LaminaCombo
extends JPanel {
public LaminaCombo() {
}
}
Si probamos nos ejecuta una ventana que no contiene nada, lo que vamos a hacer es colocar un texto en el centro y en la parte superior un ComBox que según la selección que hagamos nos cambiará el tipo de texto que hay en la etiqueta.
Vamos a empezar creando los campos de clase
que vamos a utilizar al final del código antes de la última llave de cierre:
private JLabel texto;
private JComboBox
micombo;
La etiqueta de tipo JLabel donde irá el texto y
el ComboBox al que hemos llamado micombo. Nos
situamos dentro del constructor de la lámina y establecemos el layout que
va a tener:
setLayout(new
BorderLayout());
Establecemos el texto:
texto=new JLabel("Curso
completo de Java");
Establecemos las características del texto:
texto.setFont(new Font("Serif", Font.PLAIN, 18));
Añadimos el texto en la lámina:
add(texto, BorderLayout.CENTER);
Nos toca ahora crear el combo que va a ir en
una segunda lámina, por lo que creamos una segunda lámina:
JPanel lamina_norte = new
JPanel();
Creamos el ComboBox, os
recomiendo ir a la API de Java para conocer más
este objeto y ver que tiene sobrecarga de constructores, nosotros en esta
práctica vamos a utilizar el más básico, el que no tiene nada por parámetro. Creamos
el ComboBox con el constructor por defecto:
micombo
= new JComboBox();
Añadimos elementos al combo:
micombo.addItem("Serif");
micombo.addItem("SansSerif");
micombo.addItem("Monospaced");
micombo.addItem("Dialog");
Agregamos el combo a la lámina norte y
añadirla a la lámina principal:
lamina_norte.add(micombo);
add(lamina_norte, BorderLayout.NORTH);
Probamos:
Vemos que se nos ha añadido la etiqueta del
texto en la parte central y en la parte superior el comboBox. Si
nos fijamos en el comboBox podemos hacerlo editable, es decir,
por defecto, el usuario no puede escribir nada en él, pero si lo hacemos
editable podemos hacer que el usuario escriba en el combo directamente un
elemento. Esto se hace con el método setEditable pasándole
como parámetro true, después de crear el combo:
micombo.setEditable(true);
Nos falta darle funcionalidad a la
aplicación, nos creamos una clase interna que implementa la interfaz ActionListener que
nos obliga a declarar el método actionPerformed:
private class Evento_combo
implements ActionListener{
@Override
public void
actionPerformed(ActionEvent e) {
// TODO
Auto-generated method stub
}
}
Dentro del método tenemos que indicar que
queremos que haga, dependiendo del elemento que seleccionemos en el combo el
texto cambiará el tipo de letra.
texto.setFont(new Font((String)micombo.getSelectedItem(),
Font.PLAIN, 18));
Tenemos que recurrir al casting ya
que el método getSelectedItem devuelve un Object y
el constructor de Font me pide un String por
lo que tenemos que convertirlo a un String.
Volvemos al constructor de la lámina y
ponemos el combo a la escucha, justo antes de añadir el combo a la lámina
norte, instanciamos la clase Evento_combo:
Evento_combo mievento = new Evento_combo();
micombo.addActionListener(mievento);
Probamos, si elegimos cualquier elemento del combo nos cambia el tipo de letra:
Como hemos hecho el combo editable si escribimos un tipo de letra que no esté en el combo también nos lo cambia:
Os espero en el próximo post me podéis hacer
llegar vuestras dudas o sugerencias a amizba@gmail.com
o a través de los comentarios del blog. Hasta pronto!
7.5 BOTONES DE RADIO (JRadioButton) <<
>> 7.7 JSLIDER
No hay comentarios:
Publicar un comentario