本节概要
本节主要讲条件查询之按照日期进行条件查询,用户只需要选择起始日期和终止日期即可进行查询。
创建界面
首先在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】可获取本章的源码。