Java实战之管家婆记账系统(13)——按日期条件查询界面及功能实现

本节概要

本节主要讲条件查询之按照日期进行条件查询,用户只需要选择起始日期和终止日期即可进行查询。

 

创建界面

首先在view包创建dateCheckFrame.fxml视图文件,使用Scene Builder设计界面,各个控件的属性和事件方法参考下面的代码:

<?xml version="1.0" encoding="UTF-8"?>
​
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
            fx:controller="AccountSystem.controller.DateCheckFrameController">
    <children>
        <HBox alignment="CENTER" prefHeight="86.0" prefWidth="610.0" spacing="20.0">
            <children>
                <Label text="从:"/>
                <DatePicker fx:id="startDatePicker" prefHeight="30.0" prefWidth="160.0" promptText="请选中起始日期:"/>
                <Label text="到:"/>
                <DatePicker fx:id="endDatePicker" prefWidth="160.0" promptText="请选择终止日期:"/>
                <Button fx:id="dateCheckButton" mnemonicParsing="false" onAction="#dateCheckButtonEvent" text="查询"/>
            </children>
        </HBox>
        <HBox layoutY="85.0" prefHeight="24.0" prefWidth="610.0">
            <children>
                <Separator prefHeight="126.0" prefWidth="611.0"/>
            </children>
        </HBox>
        <TableView fx:id="check_tableView" editable="true" layoutY="108.0" prefHeight="503.0" prefWidth="610.0"
                   tableMenuButtonVisible="true">
            <columns>
                <TableColumn fx:id="check_idColumn" minWidth="100.0" prefWidth="-1.0" text="序号"/>
                <TableColumn fx:id="check_typeColumn" minWidth="100.0" prefWidth="-1.0" text="类型"/>
                <TableColumn fx:id="check_moneyColumn" minWidth="100.0" prefWidth="-1.0" text="金额"/>
                <TableColumn fx:id="check_classificationColumn" minWidth="100.0" prefWidth="-1.0" text="分类"/>
                <TableColumn fx:id="check_memoColumn" minWidth="100.0" prefWidth="-1.0" text="备注"/>
                <TableColumn fx:id="check_dateColumn" minWidth="100.0" prefWidth="-1.0" text="日期"/>
            </columns>
        </TableView>
    </children>
</AnchorPane>

然后是在controller包下创建与之对应的控制器类DateCheckFrameController.java,从Scene Builder中复制该界面的组件对象和事件方法到该控制器类中:

package AccountSystem.controller;
​
import AccountSystem.bean.TableData;
import AccountSystem.tools.PublicTools;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
​
/**
 * 按日期查询界面控制器
 *
 * @author lck100
 */
public class DateCheckFrameController {
    private PublicTools publicTools = new PublicTools();
​
    @FXML
    private TableColumn<TableData, String> check_classificationColumn;
​
    @FXML
    private DatePicker endDatePicker;
​
    @FXML
    private TableColumn<TableData, String> check_idColumn;
​
    @FXML
    private TableColumn<TableData, String> check_typeColumn;
​
    @FXML
    private TableColumn<TableData, String> check_memoColumn;
​
    @FXML
    private TableView<TableData> check_tableView;
​
    @FXML
    private DatePicker startDatePicker;
​
    @FXML
    private TableColumn<TableData, String> check_moneyColumn;
​
    @FXML
    private TableColumn<TableData, String> check_dateColumn;
​
    /**
     * ”按日期查询“按钮的事件监听器
     *
     * @param event 事件
     */
    @FXML
    public void dateCheckButtonEvent(ActionEvent event) {
        
    }
}

接着就是在MainApp.java中创建方法dateCheckFrame.fxml文件:

    /**
     * 操作结果:”按日期查询“结果界面
     */
    public Scene initDateCheckTableView() {
        try {
            Parent page = FXMLLoader.load(getClass().getResource("view/dateCheckFrame.fxml"));
​
            Stage mainFrameStage = new Stage();
            mainFrameStage.setTitle("按日期查询");
            mainFrameStage.setResizable(true);
            mainFrameStage.setAlwaysOnTop(false);
            mainFrameStage.initModality(Modality.APPLICATION_MODAL);
            mainFrameStage.initOwner(primaryStage);
            Scene scene = new Scene(page);
            mainFrameStage.setScene(scene);
​
            mainFrameStage.showAndWait();
            return scene;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

最后就是调用该方法显示出“按日期查询”界面了,在MainPageController.java中dateCheckMenuItemEvent()方法就是“按日期查询”菜单项的事件处理方法:

    /**
     * ”按日期查询“菜单项的事件监听器
     *
     * @param event 事件
     */
    @FXML
    public void dateCheckMenuItemEvent(ActionEvent event) {
        // 打开按日期查询界面
        mainApp.initDateCheckTableView();
    }

运行项目,点击“按日期查询”菜单项,打开界面如下:

 

实现功能

即实现按日期条件查询的功能,获取用户选择的起始日期和终止日期,拼接查询的SQL语句从数据库中查询得到数据然后显示在表格中。

查询按钮的事件处理方法如下:

    /**
     * ”按日期查询“按钮的事件监听器
     *
     * @param event 事件
     */
    @FXML
    public void dateCheckButtonEvent(ActionEvent event) {
        // 获取用户输入的开始日期
        String startDate = String.valueOf(startDatePicker.getValue());
        // 获取用户输入的结束日期
        String endDate = String.valueOf(endDatePicker.getValue());
        // 组装SQL语句
        String sql = "select * from tb_records where rDate between '" + startDate + "' and '" + endDate + "';";
        // 设置表格数据
        publicTools.public_initTableViewData(check_tableView
                , publicTools.public_getTableViewData(sql)
                , check_idColumn
                , check_typeColumn
                , check_moneyColumn
                , check_classificationColumn
                , check_memoColumn
                , check_dateColumn);
    }

运行代码,测试功能:

 

 

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

注意:在公众号后台回复【20200404】可获取本章的源码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值