我使用JavaFX的工作,並試圖解決以下問題:JavaFX的,如何與多個tableviews和他們的項目選擇工作
我得到了2個TableViews(A和B)(每個只有一個列)。如果我選擇一個tableview項目,應該有信息在其他地方收聽,關於選定的對象。
當我選擇tableview A並單擊一個項目時,顯示信息並選擇該項目。沒關係。 現在當我嘗試選擇tableview B項目時,信息不會顯示。它只有當我第一次點擊tableview A區域(不是點擊A的直接項目)然後點擊tableview B項目時才起作用。這可能是什麼原因?
我嘗試使用tableview.getSelectionModel().clearSelection()
並添加鼠標點擊偵聽器以取消選擇其他tableview。沒有工作。
也許有一種簡單的方法來說「以前忘了所有選擇」?謝謝!
下面的代碼顯示信息時,點擊是:
....
initTableConfiguration();
categoryTableView.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) -> showBoardObjectDetails(newValue));
noteTableView.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) -> showBoardObjectDetails(newValue));}
private void initTableConfiguration() {
categoryColumn.setCellValueFactory(
cellData -> cellData.getValue().titleProperty());
noteColumn.setCellValueFactory(
cellData -> cellData.getValue().titleProperty());
}
而且對於點擊監聽器:
categoryTableView.setOnMousePressed(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent me){
noteTableView.getSelectionModel().clearSelection();
}
});
noteTableView.setOnMousePressed(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent me){
categoryTableView.getSelectionModel().clearSelection();
}
});
顯示的信息:
public void showBoardObjectDetails(Object object){
if(object != null){
Category category;
Note note;
if(object.getClass()==Category.class){
category = (Category) object;
titleLabel.setText(category.getTitle());
dateLabel.setVisible(false);
staticDateLabel.setVisible(false);
contentTextArea.setVisible(false);
staticContentLabel.setVisible(false);
}else if(object.getClass()==Note.class){
note = (Note) object;
staticContentLabel.setVisible(true);
staticDateLabel.setVisible(true);
dateLabel.setVisible(true);
contentTextArea.setVisible(true);
titleLabel.setText(note.getTitle());
dateLabel.setText(note.getDate().toString());
contentTextArea.setText(note.getText());
}
}else{
titleLabel.setText("");
dateLabel.setText("");
contentTextArea.setText("");
}
}
您可以創建併發布[MCVE](http://stackoverflow.com/help/mcve)嗎?在沒有看到導致它的代碼的情況下,知道什麼可能會出錯是幾乎不可能的。 –
@James_D好吧,現在它應該足夠的上下文 – qecce
他們是tableviews而不是listviews對不對?糾正你的問題。 –