2008-09-10 14 views

答えて

8

回避策が見つかりました。私はこの問題の次の人に知ってもらいたいと思った。

基本的には、 ComboBoxにinputVerifierを設定する代わりに、それを "Editor Component"に設定します。

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

コードの小さな部分を私たちに教えてください。

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.私は、このような厄介なUIソリューションを避けることをお勧めしたいです。

関連する問題