Comment puis-je obtenir InputVerifier de travailler avec un JComboBox modifiable

StackOverflow https://stackoverflow.com/questions/54567

  •  09-06-2019
  •  | 
  •  

Question

J'ai une JComboBox avec un custom inputVerifyer set de limiter MaxLength quand il est réglé à modifiable.

Vérifier la méthode ne semble jamais appelée.
La même verifyer est appelé sur une JTextField des beaux.

Que pourrais-je fait de mal?

Était-ce utile?

La solution

J'ai trouvé une solution de contournement.J'ai pensé que je laisserais la prochaine personne avec ce problème connaître.

Fondamentalement.Au lieu de définir la inputVerifier sur la zone de liste déroulante vous définissez pour ce qu'elle est "l'Éditeur du Composant".

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

Autres conseils

Nous montrer une petite partie de votre code.

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

Ressemble à un problème avec JComboBox être un composite composant. Je vous conseille d'éviter de telles méchant de l'INTERFACE utilisateur des solutions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top