2021-11-10 JavaFX网络助手

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

地址https://openjfx.cn/

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

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

项目创建

  1. 在gitee中创建仓库JavaFX-Networ
2021-11-10_134405.png
  1. 在主机中使用git clone 命令将JavaFX-Networ仓库拉取到工作目录中
2021-11-10_134446.png
  1. 使用idea创建新的项目,选择Maven项目
2021-11-10_134528.png
  1. 修改项目名称为上文中拉取的仓库名称,修改项目的工作目录等信息
2021-11-10_134637.png
  1. 新建项目结构如下图
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目录下根据自己开发创建包
2021-11-10_135243.png
  1. 创建启动类,在你包根路径下创建一个启动类,命令自定义,但是请遵照Java开发的命名规范,笔者这里命令Application,在启动类中创建一个main函数,并执行main函数,确保开发环境的正确性。
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函数,可以启动一个桌面程序的界面,里面会什么都没有,因为场景中的布局是上文中我们创建的一个新布局,里面还什么都没有写。
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>
2021-11-10_142923.png

TCP服务端

  1. 在form包下创建tcp_server包,在tcp_server包下创建TCPServer类和界面文件
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容