当前位置: 首页 > article >正文

java桌面程序

目标之一是把打印导出的功能最终用java实现一套,首先选定javafx,因为idea默认创建工程就带的javafx,没找到swing。

创建工程,这里要选1.8,高版本jdk默认不带fx
在这里插入图片描述

实现主界面的代码

package sample;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
import javafx.scene.control.Button;

import java.util.concurrent.atomic.AtomicInteger;

public class Main extends Application {

    //数字
    static int num = 0;

    //场景
    Scene scene;

    //场景1
    Scene scene1;

    @Override
    public void start(Stage stage) throws Exception {
        //舞台标题
        stage.setTitle("第一个java程序");
        // 流式布局:按照控件的添加次序按个摆放,按照从上到下、从左到右的次序摆放。
        FlowPane pane = new FlowPane(10, 10);
        // 居中显示
        pane.setAlignment(Pos.CENTER);
        // 场景
        scene = new Scene(pane, 800, 600);


        // 标签
        Label label = new Label("初始值:" + num);


        // 加1按钮
        Button addButton = new Button("加1");
        addButton.setOnMouseClicked(e -> {
            num++;
            label.setText("当前值:" + num);
        });

        //减1按钮
        Button subButton = new Button("减1");
        subButton.setOnMouseClicked(e -> {
            num--;
            label.setText("当前值:" + num);
        });

        //切换到场景1
        Button btnScene1 = new Button("场景1");
        btnScene1.setOnMouseClicked(e -> {
            stage.setScene(scene1);
        });

        //弹出一个子窗口
        Button btnShowChildForm = new Button("子窗口");
        btnShowChildForm.setOnMouseClicked(e -> {
            Child.ShowChild("子窗口", "传给子窗口的参数");
        });

        pane.getChildren().addAll(addButton, subButton, btnScene1, btnShowChildForm, label);


        // 场景1
        // 流式布局:按照控件的添加次序按个摆放,按照从上到下、从左到右的次序摆放。
        FlowPane pane1 = new FlowPane(10, 10);
        // 居中显示
        pane1.setAlignment(Pos.CENTER);
        scene1 = new Scene(pane1, 200, 150);

        //返回开始的场景
        Button btnReturn = new Button("返回");
        btnReturn.setOnMouseClicked(e -> {
            stage.setScene(scene);
        });
        pane1.getChildren().addAll(btnReturn);

        //默认场景和显示
        stage.setScene(scene);
        stage.show();
    }


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

实现弹窗的代码

package sample;

import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.FlowPane;
import javafx.stage.Modality;
import javafx.stage.Stage;

/**
 * 显示一个子窗口
 */
public class Child {
    /**
     * 显示一个子窗口
     *
     * @param title 标题
     * @param info  信息
     */
    public static void ShowChild(String title, String info) {
        //创建舞台
        Stage stage = new Stage();
        //设置标题
        stage.setTitle(title);
        //模态
        stage.initModality(Modality.APPLICATION_MODAL);
        // 标签
        Label label = new Label(info);


        // 关闭按钮
        Button closeButton = new Button("关闭");
        closeButton.setOnMouseClicked(e -> {
            stage.close();
        });

        FlowPane pane = new FlowPane(10, 10);
        // 居中显示
        pane.setAlignment(Pos.CENTER);
        Scene scene = new Scene(pane, 500, 350);

        //添加控件
        pane.getChildren().addAll(closeButton, label);
        //设置场景和显示
        stage.setScene(scene);
        stage.show();
    }



}

测试
在这里插入图片描述

在这里插入图片描述

打包配置,这里没生成Exe也是奇怪
在这里插入图片描述

在这里插入图片描述

写CS的第一步探索就完成了


http://www.kler.cn/a/135340.html

相关文章:

  • 爬虫补环境案例---问财网(rpc,jsdom,代理,selenium)
  • 【LeetCode】【算法】581. 最短无序连续子数组
  • 鸿蒙学习基本概念
  • 【2024软考架构案例题】你知道 Es 的几种分词器吗?Standard、Simple、WhiteSpace、Keyword 四种分词器你知道吗?
  • Postman上传图片如何处理
  • 半导体企业如何利用 Jira 应对复杂商业变局?
  • leetcode刷题之哈希表的应用(1)
  • Java(三)(static,代码块,单例设计模式,继承)
  • Swagger-----knife4j框架
  • 迎接“全全闪”时代 星辰天合发布星海架构和星飞产品
  • 集群路径规划学习(一)之EGO-swarm仿真
  • Kettle 简介
  • 读《Segment Anything in Defect Detection》
  • Spring Boot 中使用 ResourceLoader 加载资源的完整示例
  • 使用 Amazon VPS 探索存储选项:实用指南
  • Flutter 3.16 中带来的更新
  • selenium长截图,截图整个页面
  • (C)一些题2
  • 成为电车销量的“中坚力量”,微小型车不能只有“低价”?
  • 场景交互与场景漫游-osgGA库(5)
  • 如何使用Fiddler进行弱网测试
  • 模块化Common JS 和 ES Module
  • MongoDB相关基础操作(库、集合、文档)
  • Python实现WOA智能鲸鱼优化算法优化随机森林回归模型(RandomForestRegressor算法)项目实战
  • Django 入门学习总结4
  • 如何利用Python开发自动发布文章脚本?记录开发万媒易发的心路历程