JavaFx实现记事本(仿制微软自带记事本)

前言

        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="个人记事本&#10;" />
        <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();

    }
}

三、源码获取

✨还可以关注我的公众号《编程乐学》,菜单栏,有很多优质的资料等你来学习。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值