java-快速将普通main类变为javafx类,并加载自定义fxml

java-快速将普通main类变为javafx类,并加载自定义fxml

    • 前提
    • 步骤
      • [1. 普通类继承Application](#1. 普通类继承Application)
      • [2. 实现main方法](#2. 实现main方法)
      • [3. 写一个controller](#3. 写一个controller)
      • [4. 写一个fxml文件](#4. 写一个fxml文件)
      • [5. 写start方法加载fxml](#5. 写start方法加载fxml)
      • [6. 具体代码](#6. 具体代码)
      • [7. 运行即可](#7. 运行即可)

前提

使用自带javafx的jdk,这里使用的是jdk1.834,当然你可以使用其他的可行版本。

步骤

1. 普通类继承Application

public class server extends Application {

2. 实现main方法

java 复制代码
 public static void main(String[] args) {
     launch();
 }

3. 写一个controller

普通类实现implements Initializable即可

java 复制代码
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;

import java.net.URL;
import java.util.ResourceBundle;

public class controller implements Initializable {

    @FXML
    private TextArea allStatus;

    @FXML
    private TextArea pkRecord;

    @FXML
    private Label mount;

    @FXML
    private Label monitorStatus;


    @Override
    public void initialize(URL location, ResourceBundle resources) {
        System.out.println(2222);
    }
}

4. 写一个fxml文件

将fxml文件放在项目的resources目录下,后面好引用。另外,重要的是在GridPane节点上增加和controller类的关系,使用fx:controller="controller"

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>

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

<GridPane fx:controller="controller" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
  <columnConstraints>
      <ColumnConstraints hgrow="SOMETIMES" maxWidth="302.0" minWidth="10.0" prefWidth="158.0" />
    <ColumnConstraints hgrow="SOMETIMES" maxWidth="324.0" minWidth="10.0" prefWidth="285.0" />
    <ColumnConstraints hgrow="SOMETIMES" maxWidth="140.0" minWidth="10.0" prefWidth="140.0" />
  </columnConstraints>
  <rowConstraints>
    <RowConstraints maxHeight="128.0" minHeight="4.0" prefHeight="4.0" vgrow="SOMETIMES" />
    <RowConstraints maxHeight="303.0" minHeight="10.0" prefHeight="303.0" vgrow="SOMETIMES" />
    <RowConstraints maxHeight="124.0" minHeight="10.0" prefHeight="41.0" vgrow="SOMETIMES" />
  </rowConstraints>
   <children>
      <TextArea fx:id="allStatus" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
         <GridPane.margin>
            <Insets right="10.0" />
         </GridPane.margin></TextArea>
      <TextArea fx:id="pkRecord" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
         <GridPane.margin>
            <Insets left="10.0" right="10.0" />
         </GridPane.margin>
      </TextArea>
      <VBox alignment="TOP_CENTER" prefHeight="200.0" prefWidth="100.0" GridPane.columnIndex="2" GridPane.rowIndex="1">
         <children>
            <Label fx:id="mount" prefHeight="36.0" prefWidth="140.0" text="Label">
               <opaqueInsets>
                  <Insets />
               </opaqueInsets>
               <VBox.margin>
                  <Insets bottom="20.0" />
               </VBox.margin>
            </Label>
            <Label fx:id="monitorStatus" prefHeight="39.0" prefWidth="140.0" text="Label" />
         </children>
      </VBox>
   </children>
</GridPane>

5. 写start方法加载fxml

java 复制代码
  @Override
  public void start(Stage primaryStage) throws IOException {
      Parent root = FXMLLoader.load(getClass().getResource("/monitor.fxml"));
      primaryStage.setTitle("KeDD");
      primaryStage.setResizable(false);

      primaryStage.setScene(new Scene(root, 800, 500));
      primaryStage.show();
  }

6. 具体代码

java 复制代码
import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.Unpooled;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.LineBasedFrameDecoder;
import io.netty.handler.codec.string.StringDecoder;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import org.omg.CORBA.portable.ApplicationException;
import java.io.IOException;

public class server extends Application {
    public static void main(String[] args) {
        launch();
    }
    @Override
    public void start(Stage primaryStage) throws IOException {
        Parent root = FXMLLoader.load(getClass().getResource("/monitor.fxml"));
        primaryStage.setTitle("KeDD");
        primaryStage.setResizable(false);

        primaryStage.setScene(new Scene(root, 800, 500));
        primaryStage.show();
    }
}

7. 运行即可

运行后会弹出窗口,然后打印出上面的2222

相关推荐
激流丶1 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
神奇夜光杯3 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue5 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧7 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
千天夜14 分钟前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
测试界的酸菜鱼18 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
让学习成为一种生活方式22 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
羊小猪~~22 分钟前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
晨曦_子画27 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
Black_Friend36 分钟前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt