По-моему, обработка событий внутри класса контроллера в 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 ... и т. Д. Или вы рекомендуете вкладывать все в класс контроллера? Какие лучшие методы обработки событий в сложных приложениях?
обработки событий принадлежит в классе контроллера, имхо (это на самом деле главная цель контроллера класс). Если класс контроллера становится слишком большим, разделите FXML на несколько файлов; каждый имеет свой собственный контроллер. Таким образом, вы можете держать все управляемым. –