Como faço para que o InputVerifier funcione com um JComboBox editável
Pergunta
Eu tenho um JComboBox
com um costume inputVerifyer
definido para limitar MaxLength quando estiver definido como editável.
O método verify nunca parece ser chamado.
O mesmo verificador é invocado em um JTextField
multar.
O que posso estar fazendo de errado?
Solução
Eu encontrei uma solução alternativa.Pensei em avisar a próxima pessoa com esse problema.
Basicamente.Em vez de definir o inputVerifier no ComboBox, você o define como "Componente Editor".
JComboBox combo = new JComboBox();
JTextField tf = (JTextField)(combo.getEditor().getEditorComponent());
tf.setInputVerifier(verifyer);
Outras dicas
Mostre-nos uma pequena seção do seu 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 é um problema com o JComboBox ser um componente composto. Eu sugiro evitar essas soluções de interface do usuário desagradáveis.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow