Подтвердить что ты не робот

Как я могу сделать некоторые действия, когда одна конкретная вкладка выбрана с помощью 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);
                }
            }
        });
4b9b3361

Ответ 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);}
        }
    });