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