当我点击tabPane的一个标签时,我正在尝试做某事,我尝试过使用动作事件,但它不起作用:
public void tabPressClicked (ActionEvent event){
comboBoxPresYear.setVisible(true);
lblPresYear.setVisible(true);
}
[EDITED]
正确的方法:
tabPresentation.setOnSelectionChanged(new EventHandler<Event>() {
@Override
public void handle(Event t) {
if (tabPresentation.isSelected()) {
comboBoxPresYear.setVisible(true);
lblPresYear.setVisible(true);
}
}
});
答案 0 :(得分:13)
我不确定你想要做什么/你期待什么样的ActionEvent但是尝试类似的事情:
tabPane.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number oldValue, Number newValue) {
// do something...
}
});
如果你想在选择改变时做任何事情(任何标签)
或尝试:
针对特定标签(但我还没有尝试过)。
答案 1 :(得分:12)
你可以像Puce所说的selectedItemProperty
或selectedIndexProperty
这样做。这里我认为具有selectedItemProperty
的解决方案更好,因为您自己获得了所选的Tab
项目
tabPane.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Tab>() {
@Override
public void changed(ObservableValue<? extends Tab> observable, Tab oldTab, Tab newTab) {
if(newTab == tabPresentation) {
comboBoxPresYear.setVisible(true);
lblPresYear.setVisible(true);}
}
});
我认为tabPresentation
是Tab
对象本身。
答案 2 :(得分:1)
这不是最简单的方法吗
tab.selectedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
comboBoxPresYear.setVisible(true);
lblPresYear.setVisible(true);}
}
});