面向控制台编程?Java的GUI开发

news2024/10/7 16:24:25

记得之前刚开始学习Java,按部就班去阅读《Java核心技术》这本书的时候,总是听别人提起,java swing那一章不用看了。然后直到对着控制台编程了半年,回来捡起了Swing图形界面,跟着网上搞了坦克大战的游戏,总觉得外观有些过时,并且与现代化的用户界面相比可能缺乏吸引力。随着 JavaFX 的兴起和发展,一些Java开发人员开始转向使用 JavaFX 来构建 GUI 应用程序。JavaFX提供了现代化的 GUI 开发体验、灵活的界面布局和样式定义、跨平台性以及与其他 Java 技术的良好集成,这也是我后来又去学习JavaFX的原因。

什么是JavaFX

JavaFX 是 Java 编程语言的一个跨平台图形用户界面(GUI)框架,用于创建丰富、交互式和现代化的用户界面应用程序。它提供了丰富的功能和工具,使开发人员能够构建具有吸引力和高度可定制的用户界面。JavaFX 提供了一种现代化的方法来设计和开发 GUI 应用程序,支持诸如动画、多媒体、3D 渲染等现代 GUI 元素,同时保持了 Java 平台的跨平台性。

JavaFX的优势:

  1. 现代化的 GUI 开发:JavaFX 提供了丰富的功能,使得开发人员可以创建具有现代化外观和交互体验的用户界面。它支持动画、过渡效果、多媒体和3D 渲染等特性,使得应用程序能够提供更加吸引人的用户体验。

  2. 跨平台性:JavaFX 应用程序可以在多个平台上运行,包括 Windows、Mac 和 Linux。这意味着开发人员可以编写一次代码,并在多个平台上部署应用程序,减少了开发和维护的成本。

  3. CSS 样式:JavaFX 支持使用 CSS 来定义 GUI 元素的样式和外观,使得界面的设计更加灵活。开发人员可以使用 CSS 对界面进行样式化和主题化,从而实现更好的视觉效果。

  4. FXML 布局:JavaFX 提供了 FXML,一种用于声明式地描述界面布局的 XML 格式。使用 FXML 可以将界面的布局与业务逻辑分离,使得代码更易于维护和理解。

  5. 集成性:JavaFX 是 Java 标准库的一部分,与其他 Java 技术(如 Java EE、Spring 等)集成得非常好。这意味着开发人员可以方便地在 JavaFX 应用程序中使用 Java 的强大功能和第三方库。

  6. 未来发展潜力:尽管 JavaFX 相对较新,但它正在迅速发展,并且由于其现代化的特性和跨平台的能力,被广泛认为是 Java GUI 开发的未来趋势之一。

如何准备学习JavaFX

网上的教程和学习指南很容易找到,我就不在这里班门弄斧。这里仅仅讲一下JDK8之后如何在IDEA中运行Javafx。

其实在IDEA中,创建项目时会有一个选项,通过该选项会直接创建一个hello world的demo,可以直接运行。
在这里插入图片描述

但是我这里仅仅向大家介绍如何从一个空项目中构建JavaFX的程序。

新建空项目

这里随便取个名字。
在这里插入图片描述

贴上代码

简单点,直接在src下面新建一个class。 就叫Main.java。贴上代码。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 创建一个标签
        Label helloLabel = new Label("Hello World!");

        // 创建一个堆栈面板并将标签添加到其中
        StackPane root = new StackPane();
        root.getChildren().add(helloLabel);

        // 创建一个场景并将堆栈面板添加到场景中
        Scene scene = new Scene(root, 300, 200);

        // 设置舞台(窗口)的标题和场景
        primaryStage.setTitle("Hello World Example");
        primaryStage.setScene(scene);

        // 显示舞台(窗口)
        primaryStage.show();
    }

    public static void main(String[] args) {
        // 启动 JavaFX 应用程序
        launch(args);
    }
}

修复

不出意外,应该是一片红,因为我们需要手动的引入JavaFx相关的包。
到这里下载 https://openjfx.io/

我的路径是

在这里插入图片描述

引入相关包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

之后确定导入,红色消失让我们再次运行。

修改JVM配置

不出意外地出了意外,错误原因
在这里插入图片描述

有了问题咱们就解决,打开

在这里插入图片描述
在这里插入图片描述

编辑虚拟机参数

--module-path=你的javafx包的路径\lib
--add-modules=javafx.base,javafx.controls,javafx.fxml,javafx.graphics

在这里插入图片描述

ok,运行
在这里插入图片描述

大功告成

总结

自此可以快乐地写UI了,再也不是面向黑漆漆的console编程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1522949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥杯选拔赛真题38】C++判断数字 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

目录 C判断数字 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C判断数字 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 给定一个正整数N(100≤N<100000)…

从零开始搭建游戏服务器 第二节 Actor模型与应用

目录 复习本节内容正文什么是Actor模型如何应用创建Actor基类创建RootActor创建AkkaContext创建ConnectActorManager和ConnectActor生成actor并发送消息给它 课后作业结尾 复习 上一节我们使用gradle构建了一个多模块系统。 并且在登录服启动了Netty服务&#xff0c;监听confi…

字符串的模式匹配算法

一、朴素模式匹配算法 二、KMP算法 三、KMP求Next数组 四、KMP求NextVal数组

Nacos与Eureka的使用与区别

Nacos与Eureka的使用与区别 单体架构&#xff1a;优点缺点 分布式架构需要考虑的问题&#xff1a;微服务企业需求 认识SpringCloud服务的拆分与远程调用微服务调用方式 Eureka提供者和消费者架构搭建Eureka服务注册服务发现 Ribbon负载均衡饥饿加载总结 Nacos注册中心Nacos安装…

Task-balanced distillation for object detection用于

Task-balanced distillation for object detection用于目标检测的任务平衡蒸馏 摘要 主流的目标检测器通常由分类和回归两个子任务组成&#xff0c;由两个并行头部实现。这种经典的设计范式不可避免的导致分类得分和定位质量&#xff08;IOU&#xff09;之间的空间分布不一致…

鸿蒙开发实现弹幕功能

鸿蒙开发实现弹幕功能如下&#xff1a; 弹幕轮播组件&#xff1a;BannerScroll import type { IDanMuInfoList, IDanMuInfoItem } from ../model/DanMuData //定义组件 Component export default struct BannerScroll {//Watch 用来监视状态数据的变化&#xff0c;包括&#…

软考79-上午题-【面向对象技术3-设计模式】-结构型设计模式02

一、组合模式 1-1、意图 将对象组合成树型结构&#xff0c;以表示"部分-整体"的层次结构。Composite使得用户对单个对象和组 合对象的使用具有一致性。 示例&#xff1a;对象&#xff1a;文件、文件夹 1-2、结构 Component 为组合中的对象声明接口&#xff1b;在适…

CKA认证之Etcd备份与恢复

题目介绍&#xff1a; 资料参考&#xff1a; https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/configure-upgrade-etcd 解题&#xff1a; 1、备份 #参考模板列出 etcdctl 可用的各种选项。 #例如&#xff0c;你可以通过指定端点、证书和密钥来制作快照&#xff0…

Android 开发 地图 polygon 显示信息

问题 Android 开发 地图 polygon 显示信息 详细问题 笔者进行Android项目开发&#xff0c;接入高德地图绘制区域后&#xff0c;需要在指定区域&#xff08;位置&#xff09;内显示文本信息&#xff0c;如何实现 实现效果 解决方案 代码 import com.amap.api.maps.model.T…

Day47-http和www基础2

Day47-http和www基础2 1.Linux下实践观察HTTP协议通信过程1.1 DNS解析过程1.2 tcp三次握手1.3 发起HTTP请求报文阶段1.4 请求报文阶段1.5 响应报文部分1.6 分析URL&#xff0c;DNS解析1.7 HTTPS连接建立的过程1.8 请求报文阶段1.8.1 referer1.8.2 如何解决防盗链&#xff1f; 2…

【机器学习】分类模型的评价方法

&#x1f33b;个人主页&#xff1a;相洋同学 &#x1f947;学习在于行动、总结和坚持&#xff0c;共勉&#xff01; #学习笔记# 目录 一、混淆矩阵&#xff08;Confusion Matrix&#xff09; 二、评估指标&#xff08;Evaluation metrics&#xff09; 1.正确率(accuracy) …

HCIP—OSPF课后练习一

本实验模拟了一个企业网络场景&#xff0c;R1、R2、R3为公司总部网络的路由器&#xff0c;R4、R5分别为企业分支机构1和分支机构2的路由器&#xff0c;并且都采用双上行方式与企业总部相连。整个网络都运行OSPF协议&#xff0c;R1、R2、R3之间的链路位于区域0&#xff0c;R4与R…

数据分析-Pandas的直接用Matplotlib绘图

数据分析-Pandas的直接用Matplotlib绘图 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表…

Swift 面试题及答案整理,最新面试题

Swift 中如何实现单例模式&#xff1f; 在Swift中&#xff0c;单例模式的实现通常采用静态属性和私有初始化方法来确保一个类仅有一个实例。具体做法是&#xff1a;定义一个静态属性来存储这个单例实例&#xff0c;然后将类的初始化方法设为私有&#xff0c;以阻止外部通过构造…

[java基础揉碎]多态参数

多态参数 方法定义的形参类型为父类类型&#xff0c;实参类型允许为子类类型 例子: 定义一个员工类, 有名字和工资两个属性, 有年工资的方法 定义一个普通员工继承了员工类 , 重写了年工资的方法 定义一个经理类, 也继承了员工类, 同时经理多以了一个奖金的属性, 重写的年…

Ubuntu 如何安装 Beyond Compare?

Ubuntu20.04安装Beyond Compare 4.3.7 一、官网下载方式一&#xff1a;方法二&#xff1a;使用 .deb 包安装 二、安装相关依赖和bcompare三、破解常见错误解决方法 ) 文件比较工具Beyond Compare是一套由Scooter Software推出的文件比较工具。主要用途是对比两个文件夹或者文件…

JUnit 面试题及答案整理,最新面试题

JUnit中的断言&#xff08;Assert&#xff09;有哪些类型&#xff1f; JUnit提供了多种断言类型来帮助测试代码的正确性。常见的断言类型包括&#xff1a; 1、assertEquals&#xff1a; 用于检查两个值是否相等。如果不相等&#xff0c;测试失败。 2、assertTrue和assertFal…

监控系统prometheus+grafana+发送告警信息

1、基础环境准备两台或更多的主机 2、关闭selinux vi /etc/selinux/config&#xff0c;修改SELINUX的值为disabled 3、关闭防火墙 systemctl disable firewalld systemctl stop firewalld 4、prometheus官网下载 https://prometheus.io/download/ 5、grafana官网下载 https…

HTML语法基础

1.HTML是什么 HTML是超文本标记语言&#xff0c;标准通用标记语言下的一个应用。 “超文本”就是指页面内可以包含图片、链接&#xff0c;甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分&#xff08;英语&#xff1a;Head&#xff09;、和“主体”部分&…

如何在“Microsoft Visual Studio”中使用OpenCV编译应用程序

返回目录&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 前一篇&#xff1a;OpenCV4.9.0在windows系统下的安装 后一篇&#xff1a; 警告&#xff1a; 本教程可以包含过时的信息。 我在这里描述的所有内容都将适用于 OpenCV 的C\C接口。我首先假…