【问题标题】:How can I do some action when one specific Tab is selected using Javafx使用 Javafx 选择一个特定选项卡时如何执行某些操作
【发布时间】:2013-01-19 09:53:32
【问题描述】:

当我的 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);
                }
            }
        });

【问题讨论】:

    标签: javafx-2 javafx


    【解决方案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

    针对特定标签(不过我还没有尝试过)。

    【讨论】:

    • 我需要的是当我选择一个特定的选项卡(tabPress)时设置一个comboBox和一个标签Visible,就是它
    • 只需添加 if(newValue = yourSpecificTabNUMer) { comboBoxPresYear.setVisible(true); lblPresYear.setVisible(true);} 更改方法:)
    • 你试过我提到的 Tab.setOnSelectionChanged 了吗?
    【解决方案2】:

    您可以像 Puce 所说的那样使用 selectedItemPropertyselectedIndexProperty 来做到这一点。这里是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 对象本身。

    【讨论】:

    • 这真是太好了,因为我直接得到了标签项,不需要引用特定的标签编号,这可能会改变。
    【解决方案3】:

    这不是最简单的方法吗

        tab.selectedProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue) {
                comboBoxPresYear.setVisible(true);
                lblPresYear.setVisible(true);}
            }
        });
    

    【讨论】:

    • 这是一个很棒的 JavaFX8 解决方案
    【解决方案4】:

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

        tab1.setOnSelectionChanged((EventHandler<Event>) t -> {
            if (tab1.isSelected()) {
                System.out.println(tab1.getText() + " is selected");
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 2018-02-11
      • 2020-11-13
      • 1970-01-01
      • 2017-12-10
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多