如何在FXML Controller类的方法中访问JavaFx节点元素值?

时间:2017-11-15 14:10:36

标签: javafx

似乎节点(文本字段,复选框等)的值只能通过它们上的事件监听器来访问。我为什么这么说? - 首先,我是JavaFx的新手 - 第二:下面是我正在使用的场景

public class FXMLDocumentController implements Initializable {

    @FXML
    private JFXCheckBox myCheckBox;

    @FXML
    private JFXButton myButton;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
         myCheckBox.addEventHandler(MouseEvent.MOUSE_CLICKED, (e)->{
                if(myCheckBox.isSelected()){
                System.out.Println("Printed from event handler");
         });

         myButton.addEventHandler(MouseEvent.MOUSE_CLICKED, (e) -> {
                myMethod();        
         });
    }

    public void myMethod(){
          Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
          for(Node node : root.getChildrenUnmodifiable()){
              if(node.getId().equals("myCheckBox"){
                 JFXCheckBox myChk = (JFXCheckBox) node;
                 if(myChk.isSelected()){
                    System.out.Println("Printed from my inner method");
                 }
                 System.out.Println(myChk.isSelected());
              }
          }
    }

}

当我选中框时,事件处理程序会如何实现。它打印Printed from event handler。但是,当点击myButton时,myMethod始终会打印false

当我使用一个类变量来指示是否选中了复选框并在myMethod中读取它时,它表示已选中复选框...

发生了什么事?

同样的事情发生在textfields ......

0 个答案:

没有答案