Как я могу сделать некоторые действия, когда одна конкретная вкладка выбрана с помощью Javafx
Я пытаюсь что-то сделать, когда щелкнула одна вкладка моего tabPane, я попытался использовать Action Event, но это не работает:
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);
}
}
});
Ответы
Ответ 1
Я не уверен, что вы пытаетесь сделать/что ActionEvent вы ожидаете, но попробуйте либо что-то вроде:
tabPane.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number oldValue, Number newValue) {
// do something...
}
});
если вы хотите что-то сделать, когда выбор изменится (любая вкладка)
или попробуйте:
http://docs.oracle.com/javafx/2/api/javafx/scene/control/Tab.html#setOnSelectionChanged%28javafx.event.EventHandler%29
для конкретной вкладки (я еще не пробовал это пока).
Ответ 2
Вы делаете это с помощью 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
.
Ответ 3
Разве это не самый простой способ сделать это
tab.selectedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
comboBoxPresYear.setVisible(true);
lblPresYear.setVisible(true);}
}
});