2016-08-01 2 views

답변

0

: 기본적으로

TableColumn 편집 핸들러가 현재 존재 편집 한 행의 항목에 대한 속성 값을 덮어 시도 기본 핸들러로, null 이외의 커밋 . Cell.commitEdit(Object) 메서드가 새 값으로 전달되고 이 실행 된 CellEditEvent을 통해 편집 커밋 처리기로 전달 된 이므로이 작업을 수행 할 수 있습니다. 이 값을 검색하는 것은 단순히 TableColumn.CellEditEvent.getNewValue()을 호출하는 것입니다.

그것은 당신이 EventHandler 자신과 TableColumn.setOnEditCommit(javafx.event.EventHandler)를 호출하는 경우, 당신은 기본 핸들러를 제거하는 것입니다 점에 유의하는 것이 중요합니다. 그런 다음 속성 (또는 해당 데이터 소스)에 대한 쓰기 저장을 처리하지 않으면 아무 일도 일어나지 않습니다. TableColumnBase.addEventHandler(javafx.event.EventType, javafx.event.EventHandler) 메서드를 사용하여 TableColumn.EDIT_COMMIT_EVENT EventType을 원하는 EventHandler 두 번째 인수로 추가하여이 문제를 해결할 수 있습니다. 이 방법을 사용하면 기본 구현을 대체하지 않지만 편집 커밋 이 발생하면 알림을 받게됩니다.

기본적으로 commitEdit(...)을 호출하면 TableColumn이 셀이 나타내는 값을 업데이트하려고합니다. TableColumn.setOnEditCommit(...)을 호출하여 이벤트 처리기를 설정하면 기본 비헤이비어가 제거됩니다.

기본 메커니즘은 열 cellValueFactory에 의해 반환 된 개체를 WritableValue으로 캐스팅하고 해당 setValue() 메서드를 호출하여 작동합니다. 따라서 (본질적으로) 테이블의지지 모델이 JavaFX properties pattern을 사용하는 경우에만 작동합니다. 즉, 당신은 당신의 테이블에 대한 모델의 xxxProperty() 방법은 WritableValue의 구현 (예를 들어, Property 객체)을 반환

column.setCellValueFactory(cellData -> cellData.getValue().xxxProperty()); 

에 상응하는 뭔가가 있어야한다.

+0

고마워, 내가 가진 문제를 해결하는 데 도움이되었다. – miquel09

관련 문제