如何分离JavaFXGUI结构及其实现?
例如,此代码:如何分离JavaFXGUI结构及其实现?,java,javafx,Java,Javafx,例如,此代码: public class VendorManagementSystem extends Application { @Override public void start(Stage primaryStage) { VBox main_pane = new VBox(15); main_pane.setPadding(new Insets(10,10,10,10)); Button addItem_mainPan
public class VendorManagementSystem extends Application {
@Override
public void start(Stage primaryStage) {
VBox main_pane = new VBox(15);
main_pane.setPadding(new Insets(10,10,10,10));
Button addItem_mainPane = new Button("Add Item");
addItem_mainPane.setPrefWidth(120);
Button cancelation_button = new Button("Close");
cancelation_button.setPrefWidth(120);
main_pane.getChildren().addAll(addItem_mainPane,sellItem_mainPane,cancelation_button);
main_pane.setAlignment(Pos.CENTER);
Scene scene = new Scene(main_pane);
primaryStage.setHeight(450);
primaryStage.setWidth(650);
primaryStage.setTitle("Vendor Management System");
primaryStage.setScene(scene);
primaryStage.show();
然后我想在另一节课上把这个分开:
cancelation_button.setOnAction(e->{
primaryStage.close();
});
public class ControlsImplementation extends VendorManagementSystem{
cancelation_button.setOnAction(e->{
primaryStage.close();
});
我尝试创建另一个类并继承javafx类以在另一个类中创建实现:
cancelation_button.setOnAction(e->{
primaryStage.close();
});
public class ControlsImplementation extends VendorManagementSystem{
cancelation_button.setOnAction(e->{
primaryStage.close();
});
}
但它不起作用我犯了这些错误:
错误:任何关于如何分离javafx gui结构和控件实现的建议。您可以为视图和控制器创建单独的类。您应该使这两个类独立于负责启动应用程序和管理其生命周期的
应用程序
类:
视图类:
public class View extends VBox {
private final Controller controller ;
public View(Controller controller) {
this.controller = controller ;
buildUI();
}
private void buildUI() {
setPadding(new Insets(10,10,10,10));
Button addItem = new Button("Add Item");
addItem.setPrefWidth(120);
Button cancelation = new Button("Close");
cancelation.setPrefWidth(120);
cancelation.setOnAction(e -> controller.exit(this));
getChildren().addAll(addItem, /* sellItem, */ cancelation);
setAlignment(Pos.CENTER);
}
}
控制器类:
public class Controller {
public void exit(Node view) {
view.getScene().getWindow().hide();
}
}
应用程序类别:
public class VendorManagementSystem extends Application {
@Override
public void start(Stage primaryStage) {
Controller controller = new Controller();
View view = new View(controller);
Scene scene = new Scene(view);
primaryStage.setHeight(450);
primaryStage.setWidth(650);
primaryStage.setTitle("Vendor Management System");
primaryStage.setScene(scene);
primaryStage.show();
}
}
显然,在实际应用程序中,除了视图和控制器类之外,您还需要一个数据模型
您可以根据希望设置的方式改变视图和控制器之间的关系,例如,您可以给控制器一个视图引用,而不是给视图一个控制器引用,在视图中定义一个
getCancelationButton()
方法,并调用getCancelationButton().setOnAction(…)
在控制器中。这取决于您试图实现的MVC变体。这些都是编译错误。这只是意味着您的语法错误。(没有人能够在实际看到您编写的代码之前帮助您修复它们。)这与编译器错误无关,我的想法是如何将gui结构和控件实现分离@James_DSo您的问题的开始部分是什么“我试图创建另一个类并继承javafx类…”是否包括?我假设您认为这将是一种帮助您实现您想要做的事情的方法(尽管我不确定如何实现)如果不是这样的话,为什么会有这部分问题?我只是想提一下我尝试了什么却没有结果。@James_Db但你所说的是你尝试了一些东西,但没有效果。大概你想让它起作用:我的意思是,除非你向我们展示cod,否则没有人能帮你解决它这是行不通的。你到底想做什么根本不清楚:你说你想把一些代码分成另一个类,但你说你想移动的代码实际上不是你当前拥有的代码的一部分。(而且不清楚这些代码应该做什么。)你需要澄清这个问题。