Java实战之图书管理系统(JavaFX版)(5)——主界面及功能实现

本节概要

在上一节中实现了用户登录,那么在本节中将实现主界面及其相应的功能。

 

界面设计

在view文件夹下创建mainFrame.fxml,并使用Scene Builder打开,进行设计界面。

其mainFrame.fxml实现代码为:

<?xml version="1.0" encoding="UTF-8"?>
​
<?import javafx.scene.control.*?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<AnchorPane prefHeight="750.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
            fx:controller="BookManageSystem.controller.MainFrameController">
    <children>
        <MenuBar prefHeight="37.0" prefWidth="800.0">
            <menus>
                <Menu mnemonicParsing="false" text="图书类别管理">
                    <items>
                        <MenuItem fx:id="bookTypeAddMenuItem" mnemonicParsing="false"
                                  onAction="#do_bookTypeAddMenuItem_event" text="图书类别添加"/>
                        <MenuItem fx:id="bookTypeManageMenuItem" mnemonicParsing="false"
                                  onAction="#do_bookTypeManageMenuItem_event" text="图书类别维护"/>
                    </items>
                </Menu>
                <Menu mnemonicParsing="false" text="图书管理">
                    <items>
                        <MenuItem fx:id="bookAddMenuItem" mnemonicParsing="false" onAction="#do_bookAddMenuItem_event"
                                  text="图书添加"/>
                        <MenuItem fx:id="bookManageMenuItem" mnemonicParsing="false"
                                  onAction="#do_bookManageMenuItem_event" text="图书维护"/>
                    </items>
                </Menu>
                <Menu mnemonicParsing="false" text="其他">
                    <items>
                        <MenuItem fx:id="exitMenuItem" mnemonicParsing="false" onAction="#do_exitMenuItem_vent"
                                  text="退出"/>
                        <MenuItem fx:id="aboutSoftMenuItem" mnemonicParsing="false"
                                  onAction="#do_aboutSoftMenuItem_event" text="关于软件"/>
                    </items>
                </Menu>
            </menus>
        </MenuBar>
        <AnchorPane fx:id="mainFrameAnchorPane" layoutY="37.0" prefHeight="663.0" prefWidth="800.0">
            <children>
                <HBox alignment="CENTER" prefHeight="663.0" prefWidth="800.0">
                    <children>
                        <ImageView fx:id="mainBookManageImageView" fitHeight="513.0" fitWidth="611.0"
                                   pickOnBounds="true" preserveRatio="true">
                            <image>
                            </image>
                        </ImageView>
                    </children>
                </HBox>
            </children>
        </AnchorPane>
    </children>
</AnchorPane>

接着在controller包下创建MainFrameController.java类,然后在scene builder中复制控制器类的代码到MainFrameController.java中。

package BookManageSystem.controller;
​
import BookManageSystem.tools.SimpleTools;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.MenuItem;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
​
public class MainFrameController {
​
    private SimpleTools simpleTools = new SimpleTools();
​
    @FXML
    private MenuItem bookManageMenuItem;
​
    @FXML
    public ImageView mainBookManageImageView;
​
    @FXML
    private AnchorPane mainFrameAnchorPane;
​
    @FXML
    private MenuItem bookAddMenuItem;
​
    @FXML
    private MenuItem exitMenuItem;
​
    @FXML
    private MenuItem bookTypeManageMenuItem;
​
    @FXML
    private MenuItem aboutSoftMenuItem;
​
    @FXML
    private MenuItem bookTypeAddMenuItem;
​
    public void do_bookManageMenuItem_event(ActionEvent event) {
​
    }
​
    public void do_exitMenuItem_vent(ActionEvent event) {
        
    }
​
    public void do_aboutSoftMenuItem_event(ActionEvent event) {
​
    }
​
    public void do_bookTypeAddMenuItem_event(ActionEvent event) {
​
    }
​
    public void do_bookTypeManageMenuItem_event(ActionEvent event) {
​
    }
​
    public void do_bookAddMenuItem_event(ActionEvent event) {
​
    }
}

界面到此设计完成,接着就是将FXML界面加载出来了。

在MainApp.java中添加如下方法加载FXML文件:

    // 主界面
    public void initMainFrame() {
        try {
            // 加载主界面
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass().getResource("view/mainFrame.fxml"));
            AnchorPane root = loader.load();
​
            // 设置stage舞台的属性
            Stage mainFrameStage = new Stage();
            mainFrameStage.setTitle("图书管理系统主界面");
            mainFrameStage.setResizable(true);
            mainFrameStage.setAlwaysOnTop(false);
            mainFrameStage.initModality(Modality.APPLICATION_MODAL);
            mainFrameStage.initOwner(primaryStage);
​
            Scene scene = new Scene(root);
            mainFrameStage.setScene(scene);
​
            mainFrameStage.showAndWait();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

然后是在登录成功后调用这个方法显示设计好的界面。

现在运行程序就可以看到登录成功后的主界面了。

运行项目,登录成功后的界面如下:

img

 

添加图标和退出功能

上面出现的界面点击菜单项是没有任何反应的,因为还没有为菜单项事件注册处理。

为各个菜单项添加图标,在MainFrameController.java中添加initialize方法,代码如下:

    /**
     * 初始化启动
     */
    public void initialize() {
        // 为菜单项添加图标
        simpleTools.setMenuItemImage(new MenuItem[]{bookTypeAddMenuItem, bookTypeManageMenuItem, bookAddMenuItem,
                bookManageMenuItem, exitMenuItem, aboutSoftMenuItem}, new String[]{"src/BookManageSystem/images/add.png", "src/BookManageSystem/images/edit" +
                ".png", "src/BookManageSystem/images/add.png", "src/BookManageSystem/images/edit.png", "src/BookManageSystem/images/exit.png", "src/BookManageSystem/images/about.png"});
        // 设置图片
        mainBookManageImageView.setImage(new Image("file:src/BookManageSystem/images/bookmanagesystem.png"));
    }

由于退出菜单项的事件比较简单,所以在这里进行处理,代码如下:

    public void do_exitMenuItem_vent(ActionEvent event) {
        // 退出菜单项的事件处理
        System.exit(0);
    }

运行项目,效果如下:

可以看到菜单项前面有了小图标。

点击“退出”菜单项,将退出程序。

img

 

 

可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。

注意:在公众号后台回复【20200222】获取本节源码。

  • 1
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值