2008-09-10 7 views

Répondre

8

J'ai trouvé une solution de contournement. Je pensais que je laisserais la prochaine personne avec ce problème savoir.

Fondamentalement. Au lieu de définir inputVerifier sur le ComboBox, vous le définissez sur "Composant de l'éditeur".

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

Montrez-nous une petite section 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); 
     }}; 
    }  
} 

Looks like it's a problem with JComboBox being a composite component. Je vous suggère d'éviter de telles solutions d'interface utilisateur désagréables.

Questions connexes