JavaFX 是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。

地址https://openjfx.cn/

笔者在这里记录一下使用JavaFX写一个网络助手,旨在记录JavaFX的使用。

项目地址https://gitee.com/premeditate/JavaFX-Network.git

项目创建

  1. 在gitee中创建仓库JavaFX-Networ



javafx 获取和修改配置文件 javafx lookup_linux


2021-11-10_134405.png


  1. 在主机中使用git clone 命令将JavaFX-Networ仓库拉取到工作目录中


javafx 获取和修改配置文件 javafx lookup_java_02


2021-11-10_134446.png


  1. 使用idea创建新的项目,选择Maven项目


javafx 获取和修改配置文件 javafx lookup_javafx 获取和修改配置文件_03


2021-11-10_134528.png


  1. 修改项目名称为上文中拉取的仓库名称,修改项目的工作目录等信息


javafx 获取和修改配置文件 javafx lookup_android_04


2021-11-10_134637.png


  1. 新建项目结构如下图


javafx 获取和修改配置文件 javafx lookup_javafx 获取和修改配置文件_05


2021-11-10_134809.png


项目配置

  1. 在pom文件中添加配置信息,在开发过程中需要用到什么依赖时,在这里自行添加就行
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.venus</groupId>
    <artifactId>JavaFX-Network</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>-->

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <!-- 这里是放在 src/main/java-->
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.fxml</include>
                    <include>**/fxml/*.fxml</include>
                    <!-- 如果想要弄个包名专门放fxml文件,像上一行这样添加设置 -->
                    <!-- 之后,使用getResource("fxml/xx.fxml")这样子 -->
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

</project>

编码

  1. 分包,在项目的java目录下根据自己开发创建包


javafx 获取和修改配置文件 javafx lookup_linux_06


2021-11-10_135243.png


  1. 创建启动类,在你包根路径下创建一个启动类,命令自定义,但是请遵照Java开发的命名规范,笔者这里命令Application,在启动类中创建一个main函数,并执行main函数,确保开发环境的正确性。


javafx 获取和修改配置文件 javafx lookup_android_07


2021-11-10_135417.png


  1. 创建一个界面:在包路径下创建一个form包,下面在创建一个home包(分包每个人习惯不一样,你完全可以根据你编码习惯去做),在home包下创建一个Home.fxml文件和一个Home.java文件。其中fxml文件是界面布局文件,java文件是界面操作类例如处理界面操作事件等。这2个文件现在可以什么都不用改。 现在上文中创建的启动类Application继承Application,注意这里继承的Application不是我们创建的启动类,而是javafx.application.Application这个类。继承Application后需要重写一个start()函数,在start函数中有一个舞台对象,通过这个对象显示我们的界面,具体的操作就是JavaFX的内容。在这里就是创建一个场景设置场景的标题、尺寸信息,然后将场景显示在舞台中。
package org.venus;

import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 * Author      Jxx          _让世界看到我
 * On          2021/11/10
 * Note        TODO
 */
public class Application  extends javafx.application.Application {

    public static void main(String[] args) {
        System.out.println("项目的启动类");

        launch(args);
    }

    private double width = 800;
    private double height = 0.618 * width;

    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("org/venus/form/home/Home.fxml"));
        primaryStage.setTitle("Java网络调试助手");
        primaryStage.setScene(new Scene(root, width, height));
        primaryStage.show();
    }
}
  1. 运行桌面运行程序:至上一步内容再次执行启动类的main函数,可以启动一个桌面程序的界面,里面会什么都没有,因为场景中的布局是上文中我们创建的一个新布局,里面还什么都没有写。


javafx 获取和修改配置文件 javafx lookup_android_08


2021-11-10_142040.png


主界面

  1. 在上文中创建的home界面文件中可以写界面布局了,这种写布局里面的控件和标签的类型很多,需要使用哪一个可以自行查阅资料。笔者这里使用一个tab,切换不同的场景,然后各自场景有自己的界面。
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<TabPane xmlns="http://javafx.com/javafx"
            xmlns:fx="http://javafx.com/fxml"
            fx:controller="org.venus.form.home.Home">
    <tabs>
        <Tab text="TCP客户端">
        </Tab>
        <Tab text="TCP服务端">
        </Tab>
        <Tab text="UDP">
        </Tab>
    </tabs>
</TabPane>



javafx 获取和修改配置文件 javafx lookup_android_09


2021-11-10_142923.png


TCP服务端

  1. 在form包下创建tcp_server包,在tcp_server包下创建TCPServer类和界面文件