本节概要
在上一节中实现了用户登录,那么在本节中将实现主界面及其相应的功能。
界面设计
在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();
}
}
然后是在登录成功后调用这个方法显示设计好的界面。
现在运行程序就可以看到登录成功后的主界面了。
运行项目,登录成功后的界面如下:
添加图标和退出功能
上面出现的界面点击菜单项是没有任何反应的,因为还没有为菜单项事件注册处理。
为各个菜单项添加图标,在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);
}
运行项目,效果如下:
可以看到菜单项前面有了小图标。
点击“退出”菜单项,将退出程序。
可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。
注意:在公众号后台回复【20200222】获取本节源码。