InputVerifier を編集可能な JComboBox で動作させるにはどうすればよいですか

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

  •  09-06-2019
  •  | 
  •  

質問

私は持っています JComboBox カスタムで inputVerifyer 編集可能に設定されている場合、MaxLength を制限するように設定します。

verify メソッドが呼び出されないようです。
同じ検証者が JTextField 大丈夫。

私の何が間違っているのでしょうか?

役に立ちましたか?

解決

回避策を見つけました。次にこの問題を抱えている人に知らせようと思いました。

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

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

他のヒント

コードの小さなセクションを見せてください。

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

複合コンポーネントである JComboBox に問題があるようです。 このような厄介な UI ソリューションは避けることをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top