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?

È stato utile?

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
scroll top