사용자가 필드 행을 동적으로 추가 할 수있는 대화 상자가 있습니다. 각 행은 8 개의 필드 (콤보 상자 및 서식있는 텍스트 필드)와 클릭하면 빈 필드의 새 행을 추가하는 버튼으로 구성됩니다. 특정 행의 필드가 수정되었는지 쉽게 감지 할 수있는 방법이 있습니까? 각 행의 모든 필드에 대해 리스너를 만들 필요는 없지만 다른 방법은 없습니다. 그것이 유일한 방법이라면 내가 너무 많은 청취자들과 충돌 할 수있는 한계가 있습니까? TIA.
컨트롤의 내용이 변경되었는지 확인하려면 리스너를 추가해야합니다. 기간.
사용하는 각 구성 요소를 자체 이벤트를 구현하거나 (하지만 항상 "ContentChanged"와 같은 동일한 이벤트) 사용자 정의 구성 요소로 확장하거나 내용 변경. 처럼
protected void textChanged( String changedText ) {
// Collect all changes here
}
JTextField textField = new MyTextField( text -> textChanged( text ) );
private class MyTextField extends JTextField {
private final Consumer<String> textChangedConsumer;
public MyTextField( Consumer<String> textChangedConsumer ) {
super();
this.textChangedConsumer = textChangedConsumer;
getDocument().addDocumentListener( new DocumentListener() {
@Override
public void removeUpdate( DocumentEvent e ) {
textChangedConsumer.accept( getText() );
}
@Override
public void insertUpdate( DocumentEvent e ) {
textChangedConsumer.accept( getText() );
}
@Override
public void changedUpdate( DocumentEvent e ) {
textChangedConsumer.accept( getText() );
}
} );
}
}
텍스트 필드가 필요할 때마다이 클래스를 사용하고 변경 사항을 수집하는 하나의 일반적인 방법이 있습니다. JComboBoxes 등에 대해서도 동일하게 수행하십시오. 모두 textChanged 메서드를 가리 키도록합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다