2014-10-11 3 views
0

2 개의 열 (TableColumn)이있는 TableView가 있습니다.Javafx - upTableColumn의 동작을 변경하는 방법

필자는 (TableColumn) 열 중 하나를 "on edit commit"(장면 작성기를 통해)으로 위임했습니다.

셀 열 중 하나에 새 값을 쓰고 Enter 키를 누르면 위임 된 함수가 나타납니다.

그러나 값을 쓰고 다른 셀에서 마우스로 클릭하면 값이 저장되지 않고 위임 된 함수가 호출되지 않습니다. (왜냐하면 Enter 키를 누르지 않았기 때문입니다).

이 동작을 변경하는 방법이 있습니까? 장면 작성기 또는 코드를 통해 수행 할 수 있습니까?

감사합니다.

답변

0

기본 TextField 동작에서는 사용자가 Enter 키를 눌러 편집을 커밋해야합니다. 클래스를 확장하여 초점 변경시 커밋 편집 (예 : this TableView 자습서)으로 변경할 수 있습니다. 이 예제에서는 EditingCell 클래스의 구현과 사용법을 자세히 살펴 보겠습니다.

위의 예를 언급
textField.focusedProperty().addListener(new ChangeListener<Boolean>(){ 
    @Override 
    public void changed(ObservableValue<? extends Boolean> arg0, 
         Boolean arg1, Boolean arg2) { 
    if (!arg2) { 
     commitEdit(value); 
    } 
    } 
}); 

이 방법을 보여줍니다 새로운 설정하는 방법 : 필요한 기본적

, 모두 다음 예에서와 같이) 것은, commitEdit를 (호출 테이블 셀 설정 포커스 변경 리스너에 대한 텍스트 필드입니다 Java 코드의 테이블 열에 대한 테이블 셀 유형이지만 FXML에서도 설정할 수 있습니다.

+0

감사합니다.하지만 예제에서는 listener를 textField에 추가합니다. 내 TableView (또는 TableColumn)에 어떤 textField도 포함되어 있지 않습니다 ... 그래서 내가 무엇을 놓치고 있습니까? – user3668129

+0

textField는 새로 구현 된 테이블 셀 클래스의 멤버입니다. 셀이 편집 상태가되면이 텍스트 필드가 표시되어 데이터 입력이 가능합니다. 내 예제는 참조 된 세부적인 예제에서 약간 발췌 한 것입니다. 그 예는 텍스트 필드가 표시 될 때 requestFocus()를 호출하는 것과 같은 사소한 일이 거의 없지만 편집 가능한 표 셀을 구현하는 방법을 이해하는 것은 좋은 출발점입니다. 자세한 내용은 링크가 가리키는 예제를보십시오. 이게 당신을 조금 도와 주나요? – user645859

+0

soory, 도움이되지 않습니다. 나는 테이블에 입력을 삽입하기 위해 textBox를 사용하지 않을 것이다. 사용자는 입력을 테이블에 직접 삽입합니다. 나는 당신이 내게 준 링크를 읽고, 그들은 입력을 삽입하기 위해 텍스트 박스를 사용하고 테이블은 출력에 사용된다. – user3668129

관련 문제