WelcomePage.java
7.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
package cn.csbr.app.gui.page;
import cn.csbr.app.auth.LoginService;
import cn.csbr.app.config.FxConfigure;
import cn.csbr.app.gui.GUIContext;
import cn.csbr.app.gui.component.common.ImageButton;
import cn.csbr.app.gui.handler.OpenLoginHandler;
import cn.csbr.app.gui.util.DialogUtils;
import cn.csbr.app.model.LoginUser;
import cn.csbr.app.service.SysUserService;
import cn.csbr.springboot.dao.model.SysUser;
import com.alibaba.fastjson.JSON;
import javafx.geometry.Insets;
import javafx.scene.Cursor;
import javafx.scene.Node;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import org.controlsfx.control.textfield.TextFields;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.*;
import java.util.Properties;
/**
* 未登录界面
*/
@Component
public class WelcomePage extends AbstractPage {
@Autowired
private OpenLoginHandler loginActionHandler;
@Autowired
private LoginService loginService;
@Autowired
private SysUserService sysUserService;
@Autowired
private MainPage mainPage;
@Autowired
private ShowDataPage showDataPage;
@Autowired
private GUIContext context;
@Autowired
private FxConfigure fxConfigure;
private TextField usernameField = TextFields.createClearableTextField();
private static Logger log = LoggerFactory.getLogger(LoginService.class);
private PasswordField passwordField = TextFields.createClearablePasswordField();
// private final TouchModule touchModule = TouchModule.INSTANCE;
public WelcomePage() {
// touchModule.ZKNIDModule_Connect("protocol=RS232,port=COM5,baudrate=115200");
}
ImageButton loginBtn;
//构建页面布局
protected Node constructNode() {
//VBox布局将子节点堆叠在垂直列中。新添加的子节点被放置在上一个子节点的下面
VBox mainPanel = new VBox();
mainPanel.setId("loginPage");
mainPanel.getStylesheets().add("styles/login.css");
File file=new File("set.ini");
if(!file.exists()) {
try {
OutputStream opt = null;
file.createNewFile();
Properties pps = new Properties();
//加载读取文件流
opt = new FileOutputStream("set.ini");
//通过setProperty(key,value)赋值,会覆盖相同key的值
pps.setProperty("kjj", "Ctrl+Alt+H");
pps.setProperty("kjjpwd", "111111");
pps.setProperty("kjjispwd", "否");
//修改值 (必不可少)
pps.store(opt, null);
opt.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
Properties pps = new Properties();
FileInputStream fis = new FileInputStream("set.ini");
//创建文件输出流
//创建Properties属性对象用来接收ini文件中的属性
//从文件流中加载属性
pps.load(fis);
//通过getProperty("属性名")获取key对应的值
String kjj=pps.getProperty("kjj");
String kjjpwd=pps.getProperty("kjjpwd");
String kjjispwd=pps.getProperty("kjjispwd");
String[] kjjs = kjj.split("\\+");
for(String item : kjjs){
context.getYckjj().add(item);
}
context.setYcpwd(kjjpwd);
context.setKjjispwd(kjjispwd);
} catch (IOException e) {
e.printStackTrace();
}
//视图布局类继承自parent,为页面元素设置宽高
Region topspacer = new Region();
topspacer.setMinHeight(484);
// HBox布局类将JavaFX子节点放在水平行中。 新的子节点附加到右侧的末尾
HBox centerbox = new HBox();
centerbox.setMinHeight(340);
Region clspacer = new Region();
clspacer.setMinWidth(830);
Region crspacer = new Region();
crspacer.setMinWidth(200);
// 通常用于布局:第一列上的只读标签的输入表单和第二列上的输入字段,可以在行,列或单元格级别指定约束。
GridPane grid = new GridPane();
// usernameField.setText("920140");
// passwordField.setText("111111");
// 调用imageButton类的带三个参数的构造函数,设置点击事件,event->事件执行
loginBtn = new ImageButton((e) -> {
LoginUser user = new LoginUser();
log.info("登录开始");
// 取到页面上的用户名和密码输入框的值并赋值给user对象
user.setUserName(usernameField.getText());
user.setPassword(passwordField.getText());
try {
// 调用登录方法
loginService.login(user);
log.info("开始刷新主界面");
// 刷新主页面
mainPage.refresh();
log.info("开始加载主界面");
// 更新页面显示的布局节点为主界面布局,跳到主页面
context.updateMainContent(mainPage.getContent());
//显示柜内数据界面
// showDataPage.refresh();
// showDataPage.getdata();
// context.updateMainContent(showDataPage.getContent());
} catch (Exception ex) {
log.info("异常"+ex.getMessage());
// 显示错误信息
DialogUtils.showAlert(ex.getMessage(), null, context.getPrimaryStage());
} finally {
usernameField.clear();
passwordField.clear();
}
}, "loginBtn", "/images/btn_login.png");
loginBtn.setCursor(Cursor.HAND);
usernameField.setMinHeight(50);
// 设置输入框提示语
usernameField.setPromptText("用户名");
passwordField.setMinHeight(50);
passwordField.setPromptText("密码");
// passwordField.requestFocus();
// 设置默认值,一般没有的吧。。
// usernameField.setText("hsz");
// passwordField.setText("111111");
// 设置上下间距
grid.setVgap(26);
grid.setPadding(new Insets(110, 0, 0, 15));
//loginBtn.requestFocus();
//column:列 row:行 colspan:多少个列宽 rowspan:多少行宽
grid.add(usernameField, 0, 0, 1, 1);
grid.add(passwordField, 0, 1, 1, 1);
grid.add(loginBtn, 0, 2, 1, 1);
centerbox.getChildren().addAll(clspacer, grid, crspacer);
Region bottomspacer = new Region();
bottomspacer.setMinHeight(400);
// 设置vbox完整布局
mainPanel.getChildren().addAll(topspacer, centerbox, bottomspacer);
this.setTitle("欢迎界面");
mainPanel.setMaxWidth(fxConfigure.getMinWidth());
mainPanel.setMaxHeight(fxConfigure.getMinHeight());
return mainPanel;
}
@Override
public void refresh() {
// loginBtn.requestFocus();
}
public SysUser findUser(SysUser user) {
try {
user = sysUserService.findUser(user);
}
catch (Exception e) {
e.printStackTrace();
}
return user;
}
public void login(LoginUser user) {
loginService.login(user);
}
}