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

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;//场景1Scene scene1;@Overridepublic 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);});//切换到场景1Button 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的第一步探索就完成了

相关文章:

  • Windows环境VSCode配置OpenCV-项目配置(二)
  • redis+python 建立免费http-ip代理池;验证+留接口
  • golang学习笔记——多态
  • Go基础面经大全(持续补充中)
  • odoo16前端框架源码阅读——env.js
  • 矩阵理论——Gerschgorin定理,以及用python绘制Gerschgorin圆盘动图
  • git基本用法和操作
  • 8、创建第一个鸿蒙页面并实现页面跳转
  • Asp.net MVC Api项目搭建
  • 德语B级SampleAcademy
  • 浏览器内置NoSQL数据库IndexedDB
  • 快速搭建本地的chatgpt
  • 什么是Mock?为什么要使用Mock呢?
  • GEM5 Garnet DVFS / NoC DVFS教程:ruby.clk_domain ruby.voltage_domain
  • squid代理服务器
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • in typeof instanceof ===这些运算符有什么作用
  • javascript 总结(常用工具类的封装)
  • Js基础知识(一) - 变量
  • Python实现BT种子转化为磁力链接【实战】
  • Selenium实战教程系列(二)---元素定位
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue脚手架vue-cli
  • vue--为什么data属性必须是一个函数
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 技术发展面试
  • 力扣(LeetCode)22
  • 智能合约开发环境搭建及Hello World合约
  • 【干货分享】dos命令大全
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #include到底该写在哪
  • (13)Hive调优——动态分区导致的小文件问题
  • (LeetCode 49)Anagrams
  • (LeetCode C++)盛最多水的容器
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (算法)求1到1亿间的质数或素数
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net 反编译_.net反编译的相关问题
  • .NET 中的轻量级线程安全
  • .NET下的多线程编程—1-线程机制概述
  • @Service注解让spring找到你的Service bean
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [BT]BUUCTF刷题第9天(3.27)
  • [BUUCTF 2018]Online Tool
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [c]扫雷