前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javaFX(二)-使用gradle+jdk14创建javafx程序

javaFX(二)-使用gradle+jdk14创建javafx程序

作者头像
微笑的小小刀
发布2020-05-28 09:36:46
4.1K0
发布2020-05-28 09:36:46
举报
文章被收录于专栏:java技术大本营java技术大本营

在上一篇文章中,我们一起学习了jlink和jdk14的模块化. 在本篇文章中,我们一起来学习gradle来新建一个javafx的Hello World 程序.

本文中这段最重要

这段准备讲一下, 为什么要学习javafx, 小刀学这个, 是出于自己的兴趣,当时是公司用的k8s,但是想看日志啥的,还要先打开网页,登录阿里云,然后选对应的集群,然后找到对应的命名空间,然后找到对应的容器组,然后再点日志. 一个还好, 要是有两个以上的容器组,看日志就相当的麻烦了.

然后我就做了这个可以直接查看k8s日志的东东. 写着写着, 就想,其实可以把改host, 连redis,连数据库这些简单的小功能都做一起. 然后做着做着,就有了小刀平时在朋友圈发的工具. 然后现在陆陆续续写了几个月了, 自我感觉对javaFX的一些常用的方法和坑都踩了一些,所以开始更新javaFX系列. 希望能对大家有所帮助 工具包下载地址: https://download.lixiang.red/sunflower/current/

有什么问题,欢迎反馈给小刀~

环境准备

  • gradle 6.3及以上(因为6.3之后才开始支持jdk14)
  • openJDK14(上篇文章有小伙伴留言说jdk14商用不免费,我们这里特别声明了是openJDK14)
  • idea 社区版 2020.1及以上(其实社区版功能完全是够用的)
  • 小刀的微信交流群(一个人学哪行, 来, 这里有很多少伙伴陪你一起呢)

文件结构

和平常的gradle项目没有什么两样, 文件结构如下所示:

这也是最简的javafx程序的结构,有一个fxml做页面布局,有一个Main函数,有一个Controller进行事件处理

主要代码

build.gradle

代码语言:javascript
复制
plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.8'
}
// 定义使用的javafx的版本,可以自动下载依赖
javafx {
  version = "14"
  modules = [ 'javafx.controls' ,'javafx.fxml']
}
// 定义jdk的版本,还有Mainclass的位置
sourceCompatibility = '11'
mainClassName = 'red.lixiang.tools.sunflower/red.lixiang.tools.sunflower.SunflowerMain'
// 定义项目使用的编码
compileJava.options.encoding = 'UTF-8'

// 定义项目需要的依赖,初始的时候为空
dependencies {



}
// 定义去下载依赖的仓库
repositories{
  mavenLocal()
  maven { url 'https://maven.aliyun.com/repository/public/' }
  maven { url 'https://maven.aliyun.com/repository/spring/'}
  mavenCentral()
}

sunflower.fxml

代码语言:javascript
复制
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>


<AnchorPane fx:id="pane" prefHeight="640" prefWidth="480.0"  xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="red.lixiang.tools.sunflower.SunflowerController">
   <children>
      <VBox layoutX="223.0" layoutY="640.0" prefHeight="640.0" prefWidth="480.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
         <children>
            <Button fx:id="button" mnemonicParsing="false" text="button" />
            <Label fx:id="label" text="texttext" visible="false" />
         </children>
      </VBox>
   </children>
</AnchorPane>

SunflowerMain.java

代码语言:javascript
复制
/**
 * javaFX的程序必须要继承Application
 */
public class SunflowerMain extends Application {

    @Override
    public void start(Stage stage) {
        FXMLLoader fxmlLoader = new FXMLLoader();
        // 加载fxml
        fxmlLoader.setLocation(getClass().getResource("/sunflower/sunflower.fxml"));
        fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());
        Parent root = null;
        try {
            root = fxmlLoader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 设置显示的大小
        Scene scene = new Scene(root, 640, 480);
        stage.setScene(scene);
        // 显示
        stage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

SunflowerController.java

代码语言:javascript
复制
public class SunflowerController {
  // 和fxml文件上的控件是对应的
    @FXML
    private Button button;

    @FXML
    private Label label;

    @FXML
    private ResourceBundle resources;
  
    public void initialize() {
  // 为按钮绑定事件 
        button.setOnAction(e -> {
            label.setText(resources.getString("label.text") + " " + System.getProperty("javafx.version"));
            label.setVisible(! label.isVisible());
        });
    }

}

启动效果

java的 module化的应用, 不在建议使用idea直接点main函数启动,最好是用gradle右侧面板的run任务来启动,如下图所示:

运行效果如下所示:

开源的代码

其实我一直不想在文章中写很多的代码,平常小刀在朋友圈发的那个工具,已经开源, 而且也有小伙伴下载下来成功运行了, 所以,,,不要纠结上面的代码,,可以直接下载这个就行 https://github.com/xiaodaojava/sunflower-free

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文中这段最重要
  • 环境准备
  • 文件结构
  • 主要代码
    • build.gradle
      • sunflower.fxml
        • SunflowerMain.java
          • SunflowerController.java
          • 启动效果
          • 开源的代码
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档