前言
Java初学者开发第一个完整的实例项目应该就属《记事本》了,项目包含Javafx中Label,MenuItem,CheckMenuItem的使用等。话不多说先上成品:
视频效果展示
JavaWeb小案例-JavaFX实现记事本
图片效果展示
主页面
功能页面-文件
功能页面-编辑
功能页面-格式
功能页面-查找
功能页面-替换
功能页面-字体
代码展示
Note.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.web.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<BorderPane prefHeight="461.0" prefWidth="699.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.arfan.NoteBookController">
<center>
<TextArea fx:id="ta" prefHeight="434.0" prefWidth="658.0" BorderPane.alignment="CENTER" />
</center>
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="文件">
<items>
<MenuItem fx:id="NewMenu" mnemonicParsing="false" onAction="#onNewMenu" text="新建" />
<MenuItem fx:id="OpenMenu" mnemonicParsing="false" onAction="#onOpenMenu" text="打开" />
<MenuItem fx:id="SaveMenu" mnemonicParsing="false" onAction="#onSaveMenu" text="保存" />
<MenuItem fx:id="SaveAs" mnemonicParsing="false" onAction="#onSaveAs" text="另存为" />
<MenuItem fx:id="Print" mnemonicParsing="false" onAction="#onPrint" text="打印" />
<MenuItem fx:id="Exit" mnemonicParsing="false" onAction="#onExit" text="退出" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="编辑">
<items>
<MenuItem fx:id="Copy" mnemonicParsing="false" onAction="#onCopy" text="复制" />
<MenuItem fx:id="Paste" mnemonicParsing="false" onAction="#onPaste" text="粘贴" />
<MenuItem fx:id="Truncate" mnemonicParsing="false" onAction="#onTruncate" text="剪切" />
<MenuItem fx:id="Delete" mnemonicParsing="false" onAction="#onDelete" text="删除" />
<MenuItem fx:id="FindMenu" mnemonicParsing="false" onAction="#onFindMenu" text="查找" />
<MenuItem fx:id="ReplaceMenu" mnemonicParsing="false" onAction="#onReplaceMenu" text="替换" />
<MenuItem fx:id="Undo" mnemonicParsing="false" onAction="#onUndoMenu" text="撤销" />
<MenuItem fx:id="Redo" mnemonicParsing="false" onAction="#onRedoMenu" text="重做" />
<MenuItem fx:id="DateTime" mnemonicParsing="false" onAction="#onDateTime" text="时间/日期" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="格式">
<items>
<CheckMenuItem fx:id="WrapMenu" mnemonicParsing="false" onAction="#onWrapMenu" text="自动换行" />
<MenuItem fx:id="TypefaceMenu" mnemonicParsing="false" onAction="#onTypefaceMenu" text="字体" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="查看">
<items>
<CheckMenuItem fx:id="StateMenu" mnemonicParsing="false" onAction="#onStateMenu" text="状态栏" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<Label fx:id="label" text="状态栏" BorderPane.alignment="CENTER" />
</bottom>
</BorderPane>
Type.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="222.0" prefWidth="448.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.arfan.TypefaceController">
<children>
<ComboBox fx:id="Cb1" layoutX="50.0" layoutY="16.0" prefHeight="30.0" prefWidth="96.0" promptText="字体" />
<ComboBox fx:id="Cb2" layoutX="182.0" layoutY="16.0" prefHeight="30.0" prefWidth="96.0" promptText="字形" />
<ComboBox fx:id="Cb3" layoutX="319.0" layoutY="16.0" prefHeight="30.0" prefWidth="88.0" promptText="大小" />
<TextArea fx:id="ta" editable="false" focusTraversable="false" layoutX="14.0" layoutY="91.0" mouseTransparent="true" prefHeight="116.0" prefWidth="264.0" text="个人记事本 " />
<Label layoutX="14.0" layoutY="61.0" text="示例" />
<Button fx:id="SureBtn" layoutX="328.0" layoutY="177.0" mnemonicParsing="false" onAction="#onSureBtn" prefHeight="30.0" prefWidth="71.0" text="确定" />
</children>
</AnchorPane>
Main.java
package cn.arfan;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import java.io.IOException;
public class Main extends Application {
private Stage primaryStage;
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader fxmlLoader = new FXMLLoader(NoteBookController.class.getResource("NoteBook.fxml"));
Scene scene = new Scene(fxmlLoader.load());
primaryStage.setScene(scene);
Image icon = new Image("https://z1.ax1x.com/2023/12/07/picXtOg.png");
primaryStage.getIcons().add(icon);
primaryStage.setTitle("记事本");
primaryStage.setHeight(1000);
primaryStage.setWidth(800);
primaryStage.show();
}
}
三、源码获取
✨还可以关注我的公众号《编程乐学》,菜单栏,有很多优质的资料等你来学习。