优秀的编程知识分享平台

网站首页 > 技术文章 正文

javaFx 应用程序结构(简述java应用程序的结构)

nanyue 2024-07-30 03:42:28 技术文章 8 ℃

程序结构

Stage、Scene和Node是构建用户界面的三个基本组成部分,它们之间存在着紧密而明确的关系,共同构成了应用程序的可视化界面。

Stage、Scene和Node关系描述:

  • Stage(舞台):

一个JavaFX应用程序通常会创建一个或多个Stage。

每个Stage代表一个独立的窗口,具有自己的属性,如标题、大小、图标等。

一个Stage可以设置一个Scene作为其内容容器。

  • Scene(场景):

一个Stage可以设置一个Scene作为其内容容器。

一个Scene是一个独立的画布,用于承载应用程序的界面。

一个Scene可以包含多个Node。

  • Node(节点):

一个Scene可以包含多个Node。

Node是JavaFX场景图的基本构建块,可以是各种控件、布局或图形。

通过设置Scene的根节点,可以布局和组织Node的结构


应用程序的结构通常遵循经典的MVC(Model-View-Controller)设计模式,以促进代码的可维护性、可扩展性和模块化。

示例结构目录



1.Main Class

  • 功能:这是应用程序的入口点,负责初始化JavaFX环境,创建主舞台(Stage),并加载UI界面。
  • 示例代码
package com.example.mvcdemo;

import com.example.mvcdemo.controller.CalculatorViewController;
import com.example.mvcdemo.model.NumberAdder;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("CalculatorView.fxml"));
        Parent root = loader.load();

        CalculatorViewController controller = loader.getController();
        controller.setModel(new NumberAdder());

        primaryStage.setTitle("MVC Demo");
        primaryStage.setScene(new Scene(root, 300, 200));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

2.View (用户界面 - UI)

  • 功能:定义应用程序的外观和用户交互部分。这通常涉及FXML文件和对应的控制器类。

FXML文件:使用XML语法描述用户界面布局和组件。

Controller类:与FXML文件关联,处理事件和更新界面。

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.VBox?>

<VBox xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1">
    <TextField fx:id="number1Field" promptText="Number 1"/>
    <TextField fx:id="number2Field" promptText="Number 2"/>
    <Button text="Add" onAction="#onAddButtonClick"/>
    <Label fx:id="resultLabel" text="Result:"/>
</VBox>

3.Model (数据模型)

  • 功能:封装应用程序的数据逻辑和业务规则。它不关心用户界面或用户输入,只关注数据的管理、验证和存储。
package com.example.mvcdemo.model;

public class NumberAdder {
    public int add(int a, int b) {
        return a + b;
    }
}

4. Controller (控制器)

功能:作为Model和View之间的桥梁,处理用户输入,调用Model中的方法来更新数据,并根据数据变化更新View。在JavaFX中,每个视图组件(如窗口、对话框)通常有一个对应的控制器类

package com.example.mvcdemo.controller;

import com.example.mvcdemo.model.NumberAdder;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;

public class CalculatorViewController {
    private NumberAdder model;

    @FXML
    private TextField number1Field;
    @FXML
    private TextField number2Field;
    @FXML
    private Label resultLabel;

    public void setModel(NumberAdder model) {
        this.model = model;
    }

    @FXML
    private void onAddButtonClick() {
        try {
            int num1 = Integer.parseInt(number1Field.getText());
            int num2 = Integer.parseInt(number2Field.getText());
            int sum = model.add(num1, num2);
            resultLabel.setText("Result: " + sum);
        } catch (NumberFormatException e) {
            resultLabel.setText("Error: Invalid input.");
        }
    }
}

注意事项

  • 使用FXMLLoader来加载FXML文件并实例化对应的控制器。
  • 利用注解@FXML来标记控制器类中与FXML文件中元素绑定的字段和方法。

Tags:

最近发表
标签列表