Frage

Ich habe einen JComboBox mit einem custom inputVerifyer set zu begrenzen, MaxLength, wenn es ist set zu Bearbeiten.

Die verify-Methode scheint nie aufgerufen.
Das gleiche verifyer wird aufgerufen, die auf einem JTextField in Ordnung.

Was könnte ich falsch gemacht?

War es hilfreich?

Lösung

fand ich eine Abhilfe. Ich dachte, ich würde die nächste Person mit diesem Problem wissen lassen.

Im Grunde genommen. Anstatt die InputVerifier Einstellung auf der ComboBox Sie es, um es festgelegt ist „Editor-Komponente“.

JComboBox combo = new JComboBox();
JTextField tf = (JTextField)(combo.getEditor().getEditorComponent());
tf.setInputVerifier(verifyer);

Andere Tipps

Zeigen Sie uns einen kleinen Teil des Codes.

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);
        }};
    }    
}

Sieht aus wie es ist ein Problem mit JComboBox eine Verbundkomponente ist. Ich würde vorschlagen, so böse UI-Lösungen zu vermeiden .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top