java-快速将普通main类变为javafx类,并加载自定义fxml
前提
使用自带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