18

单击我的 tabPane 的一个选项卡时,我正在尝试做某事,我尝试过使用 Action Event 但它不起作用:

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);
                }
            }
        });
4

4 回答 4

14

我不确定您要做什么/您期望什么 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

对于特定的选项卡(虽然我还没有尝试过)。

于 2013-02-04T17:27:17.603 回答
13

你用Puce 所说的selectedItemPropertyor那样做。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);}
        }
    });

我假设tabPresentationTab对象本身。

于 2013-10-11T05:06:52.377 回答
2

这不是最简单的方法吗

    tab.selectedProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue) {
            comboBoxPresYear.setVisible(true);
            lblPresYear.setVisible(true);}
        }
    });
于 2018-01-04T22:35:54.790 回答
0

导入 javafx.event.Event;导入 javafx.event.EventHandler;

    tab1.setOnSelectionChanged((EventHandler<Event>) t -> {
        if (tab1.isSelected()) {
            System.out.println(tab1.getText() + " is selected");
        }
    });
于 2021-11-25T00:33:36.947 回答