Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > jComboBox Eventos del texto editable

Me han comentado en otros fotos que cuando un jComboBox es editable, los eventos son distinto. Me gustaria saber como puedo crear un actionlistener de el texto de dentro de un jComboBox editable.
Gracias.

septiembre 24, 2015 | Registered Commentertiegor

Hola tiegor.
Aquí hay un ejemplo de un JComboBox editable



import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import static java.util.logging.Level.*;
import static javax.swing.UIManager.getInstalledLookAndFeels;
import static javax.swing.UIManager.setLookAndFeel;
import static java.util.logging.Logger.*;
import static javax.swing.SwingUtilities.invokeLater;
import static javax.swing.JFrame.*;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.UIManager.LookAndFeelInfo;
import static javax.swing.JOptionPane.*;

/**
*
*/

/**
* @author ?
*
*/
public class Sencillo extends JFrame {

public Sencillo() {
setLayout(new FlowLayout());
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
X = (screenSize.width / 4);
Y = (screenSize.height / 4);
muestra = new JLabel("Selecciona");
listaDesplegable = new JComboBox<>();
listaDesplegable.setMaximumRowCount(4);
valores = new LinkedList<>();
valores.add("Rojo");
valores.add("Verde");
valores.add("Azul");
valores.add("Morado");
valores.add("Rosa");
valores.add("Blanco");
valores.add("Amarillo");
valores.add("Negro");
valores.add("Naranja");
valores.add("Guinda");
Collections.sort(valores);
valores.forEach((String v) -> {
listaDesplegable.addItem(v);
});
listaDesplegable.addActionListener(e -> {
coloca = listaDesplegable.getSelectedIndex();
switch (coloca) {
case 0:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista no editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(false);
break;
case 1:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista no editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(false);
break;
case 2:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista no editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(false);
break;
case 3:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista no editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(false);
break;
case 4:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista no editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(false);
break;
case 5:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(true);
break;
case 6:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista no editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(false);
break;
case 7:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista no editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(false);
break;
case 8:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista no editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(false);
break;
case 9:
showMessageDialog(null, listaDesplegable.getSelectedItem(), "Lista editable", INFORMATION_MESSAGE);
listaDesplegable.setEditable(true);
break;
default:
listaDesplegable.setEditable(false);
break;
}
});
add(muestra);
add(listaDesplegable);
setSize(new Dimension(X, Y));
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}

/**
* @param args
*/
public static void main(String... args) {
// TODO Auto-generated method stub
invokeLater(() -> {
try {
for (LookAndFeelInfo info : getInstalledLookAndFeels()) {
if (NIMBUS.equals(info.getName())) {
setLookAndFeel(info.getClassName());
new Sencillo().setVisible(true);
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException ex) {
getLogger(Sencillo.class.getName()).log(SEVERE, null, ex);
}
});
}

/**
*
*/
private static final long serialVersionUID = -9204252413706937916L;
private static final String NIMBUS = "Nimbus";
private List<String> valores;
private JLabel muestra;
private JComboBox<String> listaDesplegable;
private Dimension screenSize;
private int X = 0, Y = 0;
private int coloca;

}

Saludos!!!!

septiembre 25, 2015 | Unregistered Commentermario