Come posso ottenere InputVerifier a lavorare con un modificabili JComboBox
Domanda
Ho un JComboBox
con una custom inputVerifyer
per limitare MaxLength quando è impostato a modificabili.
L'verificare il metodo non sembra mai chiamato.
Lo stesso verifyer viene richiamato su un JTextField
bene.
Che cosa potrebbe essere sbagliato?
Soluzione
Ho trovato una soluzione alternativa.Ho pensato di lasciare la prossima persona con questo problema conoscere.
Fondamentalmente.Invece di impostare la inputVerifier sulla ComboBox si imposta è un "Componente Editor".
JComboBox combo = new JComboBox();
JTextField tf = (JTextField)(combo.getEditor().getEditorComponent());
tf.setInputVerifier(verifyer);
Altri suggerimenti
Ci mostra una piccola sezione di codice.
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);
}};
}
}
Sembra un problema con JComboBox essere un componente in materiale composito. Vorrei suggerire di evitare tali brutto UI soluzioni.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow