광산 프로젝트에서 JavaFX의 TreeTableView를 사용하여 BillingTableRow 유형의 일부 객체를 표시하고 있습니다. 셀 편집기를 구현했지만 onEditCommit 이벤트를 설정하려고 할 때 컨텐츠 유형을 일치시킬 수 없습니다.JavaFX TreeTableView 열 setOnEditCommit()이 편집 된 셀을 저장하기위한 핸들러 승인을 거부합니다.
// Name column
Callback<TreeTableColumn<BillingTableRow, String>, TreeTableCell<BillingTableRow, String>> nameCallback = new Callback<TreeTableColumn<BillingTableRow, String>, TreeTableCell<BillingTableRow, String>>() {
@Override
public TreeTableCell<BillingTableRow, String> call(TreeTableColumn<BillingTableRow, String> p) {
return new TextFieldTreeTableCell<BillingTableRow, String>();
}
};
nameColumn.setCellFactory(nameCallback);
nameColumn.setOnEditCommit(new EventHandler<CellEditEvent<BillingTableRow, String>>() {
@Override
public void handle(CellEditEvent<BillingTableRow, String> t) {
((BillingTableRow) t.getTableView().getItems().get(t.getTablePosition().getRow())).setName(t.getNewValue());
}
});
사람이 무엇이 잘못되었는지 말해 주실 래요 : 여기
유형 BillingTableRow의 대상이 내부 문자열 유형의 이름을 저장하는 열 중 하나에 대한 내 코드? 나는 이클립스에 다음과 같은 오류가 발생합니다 :
이유형 TreeTableColumn의 방법 setOnEditCommit이 (핸들러 < TreeTableColumn.CellEditEvent>) 인수 (새 이벤트 핸들러 < TableColumn.CellEditEvent < BillingTableRow, 문자열 >> 적용되지 않습니다() {})
내 문제에 도움을 주셔서 감사합니다. 당신이 가져 오기를
import javafx.scene.control.TableColumn.CellEditEvent;
이 있기 때문이다
, 감사합니다 expilcitly 쓰기합니다. 내 유일한 문제는 현재 행에 대한 데이터 개체를 가져 오는 방법을 모르고 새로운 이름 매개 변수로 t.getNewValue()를 전달하여 setName() 메서드를 호출한다는 것입니다. –
@PeterJonsson. handle() 메서드의 코드가 작동하지 않습니까? –
@uluik 아니, 발사,하지만 행의 밑에있는 데이터 개체를 얻을 수 없습니다. 나는 그것에 대한 setName() 메소드를 호출하기 위해 그것을 가져오고 싶다. 나는 이것을 어떻게하는지 모른다. 테이블을 사용할 때 완벽하게 작동하지만 TreeTableView를 사용하면 상황이 더 복잡해 보입니다. –