TabPaneの1つのタブがクリックされたときに何かをしようとしています。アクションイベントを使用しようとしましたが、機能しません。
public void tabPressClicked (ActionEvent event){
comboBoxPresYear.setVisible(true);
lblPresYear.setVisible(true);
}
[編集済み]
それを行う正しい方法:
tabPresentation.setOnSelectionChanged(new EventHandler<Event>() {
@Override
public void handle(Event t) {
if (tabPresentation.isSelected()) {
comboBoxPresYear.setVisible(true);
lblPresYear.setVisible(true);
}
}
});
何をしようとしているのか、どのActionEventを期待しているのかわかりませんが、次のいずれかを試してください。
tabPane.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number oldValue, Number newValue) {
// do something...
}
});
選択が変更されたときに何かをしたい場合(任意のタブ)
または試してみてください:
特定のタブ用(ただし、これはまだ試していません)。
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
オブジェクトそのものだと思います。
これが最も簡単な方法ではないでしょうか
tab.selectedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
comboBoxPresYear.setVisible(true);
lblPresYear.setVisible(true);}
}
});