JavaFX将事件处理与控制器类分离



在我看来,在javafx comm中处理控制器类内的事件很困难,尤其是当要处理的事件数量增加时。因此,我试图将事件处理与Controller类分离。例如,在复杂的应用程序中,如何管理事件?

所以,让我们举一个例子:

view.fxml文件:

    <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Button layoutX="233.0" layoutY="175.0" mnemonicParsing="false" onAction="#button1Clicked" text="Button1" />
      <Button layoutX="233.0" layoutY="225.0" mnemonicParsing="false" onAction="#button2Clicked" text="Button2" />
      <Button layoutX="233.0" layoutY="279.0" mnemonicParsing="false" onAction="#button3Clicked" text="Button3" />
   </children>
</AnchorPane>

控制器类:

public class AccountController implements Initializable {
       @FXML
    private Button button1;
    @FXML
    private Button button2;
    @FXML
    private Button button3;
    private boolean formSaved ;
    private boolean formUpdated ; 
    public void initialize(URL location, ResourceBundle resources) {
    }
    // Event handling 
    @FXML
    public button1Clicked(){
       // Handle button 1 clicked
    }
    @FXML
    public button2Clicked(){
    // Handle button 2 clicked
    }
    @FXML
    public button3Clicked(){
    // Handle button 3 clicked
    }

}

我需要移动控制器类按钮1Clicked()中的逻辑。。。并将其放在另一个类中,例如:

public class eventManager {
    // form state
    // Event handling ..etc
}

任何想法,javafx框架,设计模式。。。等还是建议将所有内容都放在控制器类中?在复杂应用程序中处理事件的最佳实践是什么?

例如,您可以在这篇博客文章JavaFx layers 中看到层的外观

它是基于设计模式的解决方案

相关内容

  • 没有找到相关文章

最新更新