¿Cómo consigo que InputVerifier funcione con un JComboBox editable?
Pregunta
Tengo una JComboBox
con una costumbre inputVerifyer
configurado para limitar MaxLength cuando está configurado como editable.
Parece que nunca se llama al método de verificación.
El mismo verificador es invocado en un JTextField
bien.
¿Qué podría estar haciendo mal?
Solución
Encontré una solución.Pensé en informarle a la próxima persona con este problema.
Básicamente.En lugar de configurar inputVerifier en el ComboBox, lo configura en su "Componente del editor".
JComboBox combo = new JComboBox();
JTextField tf = (JTextField)(combo.getEditor().getEditorComponent());
tf.setInputVerifier(verifyer);
Otros consejos
Muéstranos una pequeña sección de tu código.
package inputverifier;
import javax.swing.*;
class Go {
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
runEDT();
}});
}
private static void runEDT() {
new JFrame("combo thing") {{
setLayout(new java.awt.GridLayout(2, 1));
add(new JComboBox() {{
setEditable(true);
setInputVerifier(new InputVerifier() {
@Override public boolean verify(JComponent input) {
System.err.println("Hi!");
return true;
}
});
}});
add(new JTextField());
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}};
}
}
Parece que es un problema que JComboBox sea un componente compuesto. Sugeriría evitar soluciones de interfaz de usuario tan desagradables.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow