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?

¿Fue útil?

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