【问题标题】:Accesing combobox values from anywhere从任何地方访问组合框值
【发布时间】:2017-08-24 03:26:45
【问题描述】:

我有两个组合框,我可以从它们那里得到值。问题是,我希望这样当两个框都处于特定值时,就会发生一些事情。但是我无法在其自己的侦听器之外访问任何一个框的值。

盒子的监听器:

character_class.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>(){
        public void changed(ObservableValue<? extends String> ov, String old_val, String new_val){

也许我遗漏了一些简单的东西,因为我整天都在做这个项目,几乎没有休息,但我无法从除了听众之后的任何其他地方访问new_val。尝试将其公开失败,因为某种原因它只允许 final 作为修饰符。

【问题讨论】:

    标签: java javafx combobox global-variables


    【解决方案1】:

    对于两个 changelistener,只需获取另一个 ComboBox 的值并通过调用 combobox.getValue() 来检查它是否与特定值匹配

        ComboBox<String> c1 = new ComboBox<String>();
        c1.getItems().addAll("red", "blue", "green");
    
        ComboBox<String> c2 = new ComboBox<String>();
        c2.getItems().addAll("yellow", "purple", "blue");
    
        c1.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
            @Override
            public void changed(ObservableValue observable, Object oldValue, Object newValue) {
                String val = (String) newValue;
                if(val.equals(c2.getValue())){
                    System.out.println("IT'S SAME");
                } else {
                    System.out.println("Keep trying");
                }
            }
        });
    

    对于另一个组合框,反之亦然。

    【讨论】:

    • 在下面的组合框上执行此操作是有效的,因为上面的组合框已被声明,但尝试在上面的组合框中引用下面的组合框会出现无法解决的错误。
    • 然后在声明所有内容后添加更改监听器并显示您的代码。真的没有什么可做的,你发布的所有内容。
    • 哇,好吧,就像我说的那样,我一整天都在做这件事,休息了 2 次......这不是点击,听众不必在他们的正下方特定的组合框......像往常一样,我只是想念我的脸,这很简单。谢谢大佬。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2014-04-01
    • 2019-06-24
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多