2016-04-16 6 views
0

По-моему, обработка событий внутри класса контроллера в javafx затруднена, особенно когда количество обработанных событий растет. Так что я пытаюсь отделить обработку событий от класса Controller. Например, в сложные приложения, как управлять событиями?Обработка событий JavaFX из класса контроллера

Итак, давайте пример:

файл 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 
    } 


} 

нужно перенести логику в классе контроллера button1Clicked() ... и положить его в другой класс, например:

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

Любая идея, рамки javafx, дизайн patteren ... и т. Д. Или вы рекомендуете вкладывать все в класс контроллера? Какие лучшие методы обработки событий в сложных приложениях?

+0

обработки событий принадлежит в классе контроллера, имхо (это на самом деле главная цель контроллера класс). Если класс контроллера становится слишком большим, разделите FXML на несколько файлов; каждый имеет свой собственный контроллер. Таким образом, вы можете держать все управляемым. –

ответ

0

Для exapmle Вы можете увидеть, как слои выглядеть в этом блоге JavaFx Layers

Это решение на основе шаблонов конструкций