Skip to content

Commit e4514a3

Browse files
committed
添加成语字典工具
1 parent 59e841e commit e4514a3

10 files changed

Lines changed: 279 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ xJavaFxTool是使用javaFx开发的实用小工具集,利用业余时间把工
106106
53. BullsAndCowsGame:猜数字小游戏
107107
54. FileUnicodeTransformationTool:文件编码转换工具
108108
55. FileCompressTool:文件解压缩工具(目前支持ar、zip、tar、jar、cpio、7z、gz、bzip2、xz、lzma、pack200、deflate、snappy-framed、lz4-block、lz4-framed、zstd等格式解压缩)
109+
56. IdiomDataTool:成语字典工具
109110

110111
传输工具目前支持功能如下:
111112

file/IdiomDirty.mv.db

7.54 MB
Binary file not shown.

pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@
122122
<version>2.0.16</version>
123123
</dependency>
124124

125+
<dependency>
126+
<groupId>org.springframework</groupId>
127+
<artifactId>spring-jdbc</artifactId>
128+
</dependency>
129+
125130
<!-- activemq集成 -->
126131
<dependency>
127132
<groupId>org.springframework.boot</groupId>
@@ -277,6 +282,13 @@
277282
<version>2.2.6-PATHRIK</version>
278283
</dependency>
279284

285+
<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
286+
<dependency>
287+
<groupId>com.h2database</groupId>
288+
<artifactId>h2</artifactId>
289+
<version>1.4.200</version>
290+
</dependency>
291+
280292
</dependencies>
281293
<build>
282294
<plugins>
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.xwintop.xJavaFxTool.controller.assistTools;
2+
3+
import com.xwintop.xJavaFxTool.services.assistTools.IdiomDataToolService;
4+
import com.xwintop.xJavaFxTool.utils.JavaFxViewUtil;
5+
import com.xwintop.xJavaFxTool.view.assistTools.IdiomDataToolView;
6+
import com.xwintop.xcore.util.javafx.TooltipUtil;
7+
import javafx.collections.FXCollections;
8+
import javafx.collections.ObservableList;
9+
import javafx.event.ActionEvent;
10+
import javafx.fxml.FXML;
11+
import lombok.Getter;
12+
import lombok.Setter;
13+
import lombok.extern.slf4j.Slf4j;
14+
15+
import java.net.URL;
16+
import java.util.Map;
17+
import java.util.ResourceBundle;
18+
19+
/**
20+
* @ClassName: IdiomDataToolController
21+
* @Description: 成语字典工具
22+
* @author: xufeng
23+
* @date: 2019/11/10 0010 22:06
24+
*/
25+
26+
@Getter
27+
@Setter
28+
@Slf4j
29+
public class IdiomDataToolController extends IdiomDataToolView {
30+
private IdiomDataToolService idiomDataToolService = new IdiomDataToolService(this);
31+
private ObservableList<Map<String, String>> idiomDataTableData = FXCollections.observableArrayList();
32+
33+
@Override
34+
public void initialize(URL location, ResourceBundle resources) {
35+
initView();
36+
initEvent();
37+
initService();
38+
}
39+
40+
private void initView() {
41+
JavaFxViewUtil.setTableColumnMapValueFactory(wordTableColumn, "word");
42+
JavaFxViewUtil.setTableColumnMapValueFactory(pinyinTableColumn, "pinyin");
43+
JavaFxViewUtil.setTableColumnMapValueFactory(explanationTableColumn, "explanation");
44+
JavaFxViewUtil.setTableColumnMapValueFactory(derivationTableColumn, "derivation");
45+
JavaFxViewUtil.setTableColumnMapValueFactory(exampleTableColumn, "example");
46+
idiomDataTableView.setItems(idiomDataTableData);
47+
}
48+
49+
private void initEvent() {
50+
}
51+
52+
private void initService() {
53+
}
54+
55+
@FXML
56+
private void selectAction() {
57+
try {
58+
idiomDataToolService.selectAction();
59+
} catch (Exception e) {
60+
log.error("查询错误:", e);
61+
TooltipUtil.showToast("查询发生错误:" + e.getMessage());
62+
}
63+
}
64+
65+
@FXML
66+
private void clearAction(ActionEvent event) {
67+
idiomDataToolService.clearAction();
68+
}
69+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package com.xwintop.xJavaFxTool.services.assistTools;
2+
3+
import com.alibaba.druid.pool.DruidDataSource;
4+
import com.xwintop.xJavaFxTool.controller.assistTools.IdiomDataToolController;
5+
import lombok.Getter;
6+
import lombok.Setter;
7+
import lombok.extern.slf4j.Slf4j;
8+
import org.apache.commons.lang3.StringUtils;
9+
import org.springframework.jdbc.core.JdbcTemplate;
10+
11+
import java.util.HashMap;
12+
import java.util.List;
13+
import java.util.Map;
14+
15+
/**
16+
* @ClassName: IdiomDataToolService
17+
* @Description: 成语字典工具
18+
* @author: xufeng
19+
* @date: 2019/11/10 0010 22:06
20+
*/
21+
22+
@Getter
23+
@Setter
24+
@Slf4j
25+
public class IdiomDataToolService {
26+
private IdiomDataToolController idiomDataToolController;
27+
28+
private JdbcTemplate jdbcTemplate;
29+
30+
public IdiomDataToolService(IdiomDataToolController idiomDataToolController) {
31+
this.idiomDataToolController = idiomDataToolController;
32+
}
33+
34+
public void selectAction() throws Exception {
35+
if (jdbcTemplate == null) {
36+
DruidDataSource dataSource = new DruidDataSource();
37+
dataSource.setUrl("jdbc:h2:D:\\ideaWorkspaces\\xwintop\\xJavaFxTool\\file\\IdiomDirty");
38+
dataSource.setDriverClassName("org.h2.Driver");
39+
dataSource.init();
40+
jdbcTemplate = new JdbcTemplate(dataSource);
41+
}
42+
String sql = "SELECT * FROM Idiom_dirty WHERE word like ?";
43+
String sqlArgs = "";
44+
if (StringUtils.isEmpty(idiomDataToolController.getSelectWordTextField().getText())) {
45+
String[] indexString = new String[]{
46+
idiomDataToolController.getIndex1TextField().getText(),
47+
idiomDataToolController.getIndex2TextField().getText(),
48+
idiomDataToolController.getIndex3TextField().getText(),
49+
idiomDataToolController.getIndex4TextField().getText()
50+
};
51+
for (int i = 0; i < 4; i++) {
52+
if (StringUtils.isEmpty(indexString[i])) {
53+
sqlArgs += "_";
54+
} else {
55+
sqlArgs += indexString[i];
56+
}
57+
}
58+
59+
} else {
60+
sqlArgs = "%" + idiomDataToolController.getSelectWordTextField().getText() + "%";
61+
}
62+
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, sqlArgs);
63+
idiomDataToolController.getIdiomDataTableData().clear();
64+
for (Map<String, Object> stringObjectMap : list) {
65+
Map<String, String> dataRow = new HashMap<String, String>();
66+
dataRow.put("word", stringObjectMap.get("word").toString());
67+
dataRow.put("pinyin", stringObjectMap.get("pinyin").toString());
68+
dataRow.put("explanation", stringObjectMap.get("explanation").toString());
69+
dataRow.put("derivation", stringObjectMap.get("derivation").toString());
70+
dataRow.put("example", stringObjectMap.get("example").toString());
71+
idiomDataToolController.getIdiomDataTableData().add(dataRow);
72+
}
73+
}
74+
75+
public void clearAction() {
76+
idiomDataToolController.getIndex1TextField().setText(null);
77+
idiomDataToolController.getIndex2TextField().setText(null);
78+
idiomDataToolController.getIndex3TextField().setText(null);
79+
idiomDataToolController.getIndex4TextField().setText(null);
80+
idiomDataToolController.getSelectWordTextField().setText(null);
81+
}
82+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.xwintop.xJavaFxTool.view.assistTools;
2+
3+
import javafx.fxml.FXML;
4+
import javafx.fxml.Initializable;
5+
import javafx.scene.control.Button;
6+
import javafx.scene.control.TableColumn;
7+
import javafx.scene.control.TableView;
8+
import javafx.scene.control.TextField;
9+
import lombok.Getter;
10+
import lombok.Setter;
11+
12+
import java.util.Map;
13+
14+
/**
15+
* @ClassName: IdiomDataToolView
16+
* @Description: 成语字典工具
17+
* @author: xufeng
18+
* @date: 2019/11/10 0010 22:06
19+
*/
20+
21+
@Getter
22+
@Setter
23+
public abstract class IdiomDataToolView implements Initializable {
24+
@FXML
25+
protected TextField index1TextField;
26+
@FXML
27+
protected TextField index2TextField;
28+
@FXML
29+
protected TextField index3TextField;
30+
@FXML
31+
protected TextField index4TextField;
32+
@FXML
33+
protected TextField selectWordTextField;
34+
@FXML
35+
protected Button selectButton;
36+
@FXML
37+
protected Button clearButton;
38+
@FXML
39+
protected TableView<Map<String, String>> idiomDataTableView;
40+
@FXML
41+
protected TableColumn<Map<String, String>, String> wordTableColumn;
42+
@FXML
43+
protected TableColumn<Map<String, String>, String> pinyinTableColumn;
44+
@FXML
45+
protected TableColumn<Map<String, String>, String> explanationTableColumn;
46+
@FXML
47+
protected TableColumn<Map<String, String>, String> derivationTableColumn;
48+
@FXML
49+
protected TableColumn<Map<String, String>, String> exampleTableColumn;
50+
51+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<?import javafx.geometry.Insets?>
4+
<?import javafx.scene.control.Button?>
5+
<?import javafx.scene.control.Label?>
6+
<?import javafx.scene.control.TableColumn?>
7+
<?import javafx.scene.control.TableView?>
8+
<?import javafx.scene.control.TextField?>
9+
<?import javafx.scene.layout.AnchorPane?>
10+
<?import javafx.scene.layout.BorderPane?>
11+
<?import javafx.scene.layout.HBox?>
12+
13+
14+
<AnchorPane prefHeight="550.0" prefWidth="950.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.xwintop.xJavaFxTool.controller.assistTools.IdiomDataToolController">
15+
<children>
16+
<BorderPane layoutX="179.0" layoutY="43.0" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
17+
<top>
18+
<HBox alignment="CENTER" spacing="10.0" BorderPane.alignment="CENTER">
19+
<children>
20+
<Label text="位置" />
21+
<TextField fx:id="index1TextField" onKeyReleased="#selectAction" prefWidth="50.0" promptText="位置1" />
22+
<TextField fx:id="index2TextField" onKeyReleased="#selectAction" prefWidth="50.0" promptText="位置2" />
23+
<TextField fx:id="index3TextField" onKeyReleased="#selectAction" prefWidth="50.0" promptText="位置3" />
24+
<TextField fx:id="index4TextField" onKeyReleased="#selectAction" prefWidth="50.0" promptText="位置4" />
25+
<Label text="模糊查询">
26+
<HBox.margin>
27+
<Insets left="20.0" />
28+
</HBox.margin>
29+
</Label>
30+
<TextField fx:id="selectWordTextField" onKeyReleased="#selectAction" promptText="输入查询的成语字段" />
31+
<Button fx:id="selectButton" mnemonicParsing="false" onAction="#selectAction" text="查询" />
32+
<Button fx:id="clearButton" mnemonicParsing="false" onAction="#clearAction" text="清空" />
33+
</children>
34+
</HBox>
35+
</top>
36+
<center>
37+
<TableView fx:id="idiomDataTableView" BorderPane.alignment="CENTER">
38+
<columns>
39+
<TableColumn fx:id="wordTableColumn" prefWidth="84.0" text="词目" />
40+
<TableColumn fx:id="pinyinTableColumn" prefWidth="120.0" text="发音" />
41+
<TableColumn fx:id="explanationTableColumn" prefWidth="286.0" text="释义" />
42+
<TableColumn fx:id="derivationTableColumn" prefWidth="217.0" text="出处" />
43+
<TableColumn fx:id="exampleTableColumn" minWidth="0.0" prefWidth="222.0" text="示例" />
44+
</columns>
45+
<BorderPane.margin>
46+
<Insets top="10.0" />
47+
</BorderPane.margin>
48+
<columnResizePolicy>
49+
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
50+
</columnResizePolicy>
51+
</TableView>
52+
</center>
53+
</BorderPane>
54+
</children>
55+
</AnchorPane>

src/main/resources/config/toolFxmlLoaderConfiguration.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,11 @@
314314
<url>/com/xwintop/xJavaFxTool/fxmlView/littleTools/FileCompressTool.fxml</url>
315315
<title>FileCompressTool</title>
316316
<menuParentId>littleTools</menuParentId>
317+
</ToolFxmlLoaderConfiguration>
318+
<ToolFxmlLoaderConfiguration>
319+
<url>/com/xwintop/xJavaFxTool/fxmlView/assistTools/IdiomDataTool.fxml</url>
320+
<title>IdiomDataTool</title>
321+
<menuParentId>assistTools</menuParentId>
317322
<isDefaultShow></isDefaultShow>
318323
</ToolFxmlLoaderConfiguration>
319324

src/main/resources/locale/Menu.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,5 @@ Mp3ConvertTool=Mp3\u8F6C\u6362\u5DE5\u5177
9393
SealBuilderTool=\u5370\u7AE0\u751F\u6210\u5DE5\u5177
9494
BullsAndCowsGame=\u731C\u6570\u5B57\u6E38\u620F
9595
FileUnicodeTransformationTool=\u6587\u4EF6\u7F16\u7801\u8F6C\u6362\u5DE5\u5177
96-
FileCompressTool=\u6587\u4EF6\u89E3\u538B\u7F29\u5DE5\u5177
96+
FileCompressTool=\u6587\u4EF6\u89E3\u538B\u7F29\u5DE5\u5177
97+
IdiomDataTool=\u6210\u8BED\u5B57\u5178\u5DE5\u5177

src/main/resources/locale/Menu_en_US.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,5 @@ Mp3ConvertTool=Mp3ConvertTool
9393
SealBuilderTool=SealBuilderTool
9494
BullsAndCowsGame=BullsAndCowsGame
9595
FileUnicodeTransformationTool=FileUnicodeTransformationTool
96-
FileCompressTool=FileCompressTool
96+
FileCompressTool=FileCompressTool
97+
IdiomDataTool=IdiomDataTool

0 commit comments

Comments
 (0)