IDEA+maven+javafx(java 1.8)入坑记录
序
好久没写博客了,主要是因为懒,写博客真的是个难坚持的事。但今天登上来看了看,之前记录ctf写的wp竟然点击量这么多了,突然让我有了继续写下去的动力。
这段时间遇到了好多事,中间也有想过写几篇文章记录下,每每准备动笔时都懒癌发作,有的文章起个头就没写了。
这次这个破玩意让我费了九牛二虎之力,而且我发现网上文章几乎没有此类教程时,让我重燃了写博客的斗志。
起因

最近看到了这个东西,下载下来用了下,发现是python做了一个界面,收集的各种工具。而最主要不是这个工具本身,而是让我感觉师傅们好像都在做GUI界面,我突然就有了兴趣,也想自己搞一搞了。
我简单看了看这里面的工具,大部分是java做的,大部分好像是jwt或swing做的,也有一些好看一点的就是javafx做的了。
对于GUI,我之前学过一点qt,但是被它槽和信号折磨的头痛欲裂,再加上其灵活多变,国内教程少就放弃了。然后看了看其它的GUI,由于我想要跨平台、可编辑GUI(说白了就是懒)并且我对js一窍不通,最后就选择学一下javafx。
开整
打开百度和b站我才发现,这破玩意好多人还在用eclipse做开发,idea做的教程少之又少,国内甚至没有,于是我自己开启了排坑之路。
第一步:下载JavaFX Scene Builder
地址:https://www.oracle.com/java/technologies/javafxscenebuilder-1x-archive-downloads.html
这个东西的作用就是让你有可编辑的GUI界面,甚至可以直接生成代码并预览,非常方便。
安装好后就会有下面这个图标:

同时下好fx插件

第二步:去官网看教程按步骤做
这块很重点,建议跟着一步一步来
地址:https://openjfx.cn/openjfx-docs/#next-steps

新建一个maven项目,archetype选javafx,一般来说第一次都没有,按照官网说明添加即可

名字瞎b起,maven选自己的比较好,然后到重点了,这里一定要按照官网选择javafx-archetype-fxml或javafx-archetype-simple,不能用默认配置

这里我选择了simple的模式后,完成
此时我们按照教程运行compiler:compile大概率是会报错的

这是由于jdk版本问题导致,官网默认是11,而我们用的是8
首先把pom.xml这里改掉

然后进入setting把这里改掉

然后看一下代码App.java,可以看到var类型在java8中并不支持,所以手动替换

module-info.java我们也并不需要,删掉即可

好了,此时我们compiler:compile,并且javafx:run。或者直接在App.java的main函数里右键run,就能出现如下窗口

此时还没实现GUI编辑,你可以构建如下目录。这里要注意resources下级目录要与java中保持一致

具体simple.fxml的内容可以参考在创建项目时直接选择javafx的,也可以选择javafx-archetype-fxml,这样会自带resources和fxml
代码改掉

此时就可使用GUI编程了

第三步:编译处jar文件
我们目的是跨平台的软件,肯定要编译成jar去运行,此处设置如下
先把编译版本选成java8

然后建立artifacts,此处一定注意如图选项,不能用默认的,必须选到根目录,不然编译完成后会找不到主类

点击build

双击运行一下

到这里就大功告成了!!!!!!
当然有了maven你想加什么依赖都是很容易的事了,最后展示一下,我的小玩具

IDEA+maven+javafx(java 1.8)入坑记录的更多相关文章
- c#调用c++ dll 入坑记录
1.DLL引用坑 [DllImport("NetDLL.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConve ...
- React Native入坑记录
1.render中如果使用props,直接用this.props.xxx,如果是在JSX中,用{this.props.xxx} 2.警告each child in an array or iterat ...
- Windows To Go入坑记录
什么是Windows To Go? https://en.wikipedia.org/wiki/Windows_To_Go 微软为了解决企业用户的需求而推出,可以在u盘或者移动硬盘启动window系统 ...
- vue element InfiniteScroll 无限滚动 入坑记录
select_law_by_tag() { this.laws_loading.is_loading = true; this.laws_loading.no_more = false; this.e ...
- 入“坑”mybatis后如何挣脱?
既然已经入"坑"mybatis了,你竟然还想着挣脱,我是不会让你挣脱的~ 当然我有一个算是挣脱的办法.那就是把它学会.理解透.这样我们也就不用在坑里一直徘徊,也算得上是一种挣脱吧! ...
- Angular 从入坑到挖坑 - Angular 使用入门
一.Overview angular 入坑记录的笔记第一篇,完成开发环境的搭建,以及如何通过 angular cli 来创建第一个 angular 应用.入坑一个多星期,通过学习官方文档以及手摸手的按 ...
- Angular 从入坑到挖坑 - 组件食用指南
一.Overview angular 入坑记录的笔记第二篇,介绍组件中的相关概念,以及如何在 angular 中通过使用组件来完成系统功能的实现 对应官方文档地址: 显示数据 模板语法 用户输入 组件 ...
- Angular 从入坑到挖坑 - 表单控件概览
一.Overview angular 入坑记录的笔记第三篇,介绍 angular 中表单控件的相关概念,了解如何在 angular 中创建一个表单,以及如何针对表单控件进行数据校验. 对应官方文档地址 ...
- Angular 从入坑到挖坑 - HTTP 请求概览
一.Overview angular 入坑记录的笔记第四篇,介绍在 angular 中如何通过 HttpClient 类发起 http 请求,从而完成与后端的数据交互. 对应官方文档地址: Angul ...
随机推荐
- 2021.10.7 NKOJ周赛总结
Ⅰ. 自描述序列 问题描述: 序列 1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,... 看似毫无规律,但若我们将相邻的数字合并 : 1,22,11,2,1,22,1 ...
- 零基础入门C语言超详细的字符串详解
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, ...
- Python | 实现pdf文件分页
不知道大家有没有遇到过这么一种情况,就比如一个pdf格式的电子书,我们经常浏览的是其中的一部分,而这电子书的页数很大,每当需要浏览时,就需要翻到对应的页码,就有点儿繁琐. 还有一些情况,比如,我们想分 ...
- 从零开始 DIY 智能家居 - 智能开窗器
前言 做完智慧浇水器之后对这种可以节省时间和精力的场景总有一种谜之向往(懒鬼是这样的),这次我准备做一个可以自动开窗的装置,结合之前的甲醛检测传感器就可以实现甲醛含量过高自动开窗通风,之后还可以把燃气 ...
- AtCoder Beginner Contest 213 F题 题解
F - Common Prefixes 该题也是囤了好久的题目了,看题目公共前缀,再扫一眼题目,嗯求每个后缀与其他后缀的公共前缀的和,那不就是后缀数组吗?对于这类问题后缀数组可是相当在行的. 我们用后 ...
- Python3 装逼神器---词云(wordcloud)
词云 (Word Cloud)是对文本中出现频率较高的词语给予视觉化展示的图形, 是一种常见的文本挖掘的方法. 实例: 依赖包: # pip3 install wordcloud jieba ...
- vim 打开文件的常用操作
一.如果在终端中开没有打开vim,可以: 横向分割显示: $ vim -o filename1 filename2 纵向分割显示: $ vim -O filename1 filename2 二.如果已 ...
- 【java+selenium3】隐式等待+显式等待 (七)
一.隐式等待 -- implicitlyWait 调用方式:driver.manage().timeouts().implicitlyWait(long time, TimeUnit unit); / ...
- C# 合并两个数组总结
byte[] b1 = new byte[] { 1, 2, 3, 4, 5 }; byte[] b2 = new byte[] { 6, 7, 8, 9 }; byte[] b3 = new byt ...
- Java学习(十)
今天学习的是参数的传入,感觉这个和c++差不多. 传一个参数进去,要看这个参数是地址还是一个值,如果是值的话那无论在方法中如何加减,也只是另一个局部变量的事情了,与该参数无关,在原方法中参数的值保持不 ...