편집 가능한 JComboBox와 함께 작동하도록 InputVerifier를 얻는 방법은 무엇입니까?

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

  •  09-06-2019
  •  | 
  •  

문제

나는 가지고있다 JComboBox 관습으로 inputVerifyer 편집 가능으로 설정된 경우 MaxLength를 제한하도록 설정합니다.

확인 메소드가 호출되지 않는 것 같습니다.
동일한 검증자가 다음에서 호출됩니다. 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