Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface JavaFX-从外部GUIController获取复选框属性_User Interface_Checkbox_Javafx - Fatal编程技术网

User interface JavaFX-从外部GUIController获取复选框属性

User interface JavaFX-从外部GUIController获取复选框属性,user-interface,checkbox,javafx,User Interface,Checkbox,Javafx,在JavaFX中,我想检查是否选中了复选框,我想使用lookup(#id)方法进行检查。但是,此方法返回一个节点,该节点没有isSelected()方法 下面的代码显示了它调用的GUIController和一个类Visualize,其中复选框的状态被读取。我添加了一个解决方案(读取GUIController中的复选框属性并将它们传递给可视化),但这不是我想要继续的方式。我希望复选框状态是在Visualize中读取的,因为我需要读取许多其他GUI元素,因此传递单个对象以进行可视化比在GUI控制器中

在JavaFX中,我想检查是否选中了复选框,我想使用
lookup(#id)
方法进行检查。但是,此方法返回一个
节点
,该节点没有
isSelected()
方法

下面的代码显示了它调用的
GUIController
和一个类
Visualize
,其中复选框的状态被读取。我添加了一个解决方案(读取GUIController中的复选框属性并将它们传递给可视化),但这不是我想要继续的方式。我希望复选框状态是在Visualize中读取的,因为我需要读取许多其他GUI元素,因此传递单个对象以进行可视化比在GUI控制器中预计算列表更紧凑

谢谢你的建议

GUI控制器:

public class GUIController implements Initializable {

@FXML private AnchorPane RootPane;
@FXML private CheckBox TextCheckBox;

@Override
public void initialize(URL url, ResourceBundle rb) {

    Boolean TextCheckBoxSelected = TextCheckBox.isSelected();

    Visualize visualizeInstance = new Visualize();
    root3D = visualizeInstance.draw(RootPane, TextCheckBoxSelected);

    /* ... */
public class Visualize {

public Visualize() {
    //
}

public Group draw(AnchorPane RootPane, Boolean TextCheckBoxSelected) {

    System.out.println(RootPane.lookup("#TextCheckBox"));
    System.out.println(TextCheckBoxSelected);

    /* ... */
由GUI控制器调用的类:

public class GUIController implements Initializable {

@FXML private AnchorPane RootPane;
@FXML private CheckBox TextCheckBox;

@Override
public void initialize(URL url, ResourceBundle rb) {

    Boolean TextCheckBoxSelected = TextCheckBox.isSelected();

    Visualize visualizeInstance = new Visualize();
    root3D = visualizeInstance.draw(RootPane, TextCheckBoxSelected);

    /* ... */
public class Visualize {

public Visualize() {
    //
}

public Group draw(AnchorPane RootPane, Boolean TextCheckBoxSelected) {

    System.out.println(RootPane.lookup("#TextCheckBox"));
    System.out.println(TextCheckBoxSelected);

    /* ... */
输出:

CheckBox[id=TextCheckBox, styleClass=check-box]'Text'
true

如果您真的想这样做,只需向下播放
查找的结果

public class Visualize {


    // ...

    public Group draw(AnchorPane rootPane) {
        CheckBox textCheckBox = (CheckBox) rootPane.lookup("#TextCheckBox");
        boolean selected = textCheckBox.isSelected();
        // ...
    }
}

如果你这样做是因为你需要你的代码> VisualStudio对象来响应<代码>复选框< /代码>的选择状态的变化,那么考虑通过一个<代码> BooLoeAuths,如果需要的话,你可以观察到:

public class Visualize {

    private BooleanProperty selectedProperty ;

    public Visualize(BooleanProperty selectedProperty) {
        this.selectedProperty = selectedProperty ;
        // ...
    }
    // ...

    public Group draw() {
        boolean selected = selectedProperty.get();
        // ...
    }
}