今天我们来看一下用户信息修改界面,这部分关于Java Winform的博客今天到这里就是左后一篇了,更多的还是有用到的再去挖。这篇完了之后我们就进入java重拾的web实战。OK,废话不多说,今天还获得惊喜,什么惊喜呢,看完博客再给你说。
用户信息修改的C#界面如下
我们再看一下java版本的界面
初始化代码如下
1
2
3
4
5
6
7
8
|
private
void
Init() {
cmbSex.addItem(
"男"
);
cmbSex.addItem(
"女"
);
ButtonGroup btnGrp =
new
ButtonGroup();
btnGrp.add(radioBz);
btnGrp.add(radioWh);
btnGrp.setSelected(radioWh.getModel(),
true
);
}
|
那我们今天就要实现这个界面的功能。首先我们先从右边的图片选择下手,点击浏览按钮,弹出文件选择框,选择图片文件,这里设置只支持jpg和GIF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
private
void
ChooseImageAndShow() {
JFileChooser jfc =
new
JFileChooser();
jfc.setDialogTitle(
"选择照片"
);
jfc.setMultiSelectionEnabled(
false
);
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
JpgFileFilter jpgFilter =
new
JpgFileFilter();
GifFileFilter gifFilter =
new
GifFileFilter();
jfc.addChoosableFileFilter(jpgFilter);
jfc.addChoosableFileFilter(gifFilter);
jfc.setFileFilter(jpgFilter);
jfc.showOpenDialog(
this
);
File file = jfc.getSelectedFile();
if
(file !=
null
) {
photoPath = file.getAbsolutePath();
Image img = Toolkit.getDefaultToolkit().createImage(
file.getAbsolutePath());
ImageIcon imgIcon =
new
ImageIcon(img.getScaledInstance(
panelPhoto.getWidth(), panelPhoto.getHeight(),
Image.SCALE_SMOOTH));
this
.labPhoto.setIcon(imgIcon);
}
}
|
该方法先new一个文件选择框,然后设置标题,设置是否可以多选,选择的模式是只能选择文件还是文件和文件夹都可以选择。然后设置两个文件过滤,只能显示jpg和GIF文件,这个文件过滤没有C#那么简单,需要些两个类去继承FileFilter这个抽象类,并实现他的两个抽象方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
class
JpgFileFilter
extends
FileFilter {
public
String getDescription() {
return
"*.jpg"
;
}
public
boolean
accept(File file) {
String name = file.getName();
return
name.toLowerCase().endsWith(
".jpg"
);
}
}
class
GifFileFilter
extends
FileFilter {
public
String getDescription() {
return
"*.gif"
;
}
public
boolean
accept(File file) {
String name = file.getName();
return
name.toLowerCase().endsWith(
".gif"
);
}
}
|
好了我们看一下效果
看到了吧标题,文件类型过滤都是我们刚才设置的。好的,我们就选择这个图片
图片就显示在了label中,好了,显示就是通过上面贴的这段代码实现的
1
2
3
4
5
6
7
8
9
|
if
(file !=
null
) {
photoPath = file.getAbsolutePath();
Image img = Toolkit.getDefaultToolkit().createImage(
file.getAbsolutePath());
ImageIcon imgIcon =
new
ImageIcon(img.getScaledInstance(
panelPhoto.getWidth(), panelPhoto.getHeight(),
Image.SCALE_SMOOTH));
this
.labPhoto.setIcon(imgIcon);
}
|
首先,我们将绝对路径赋给一个全局变量,用于最后的保存时获取图片的路径。然后再通过路径得到Image,最后按比例缩放,勾选复选框是表示我们要保存这个图片。
接下来我们看一下保存按钮做的事情
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
|
private
void
SaveUserInfo()
throws
FileNotFoundException {
String userName = txtUserName.getText().trim();
String sex = cmbSex.getSelectedItem().toString();
String age = fmtAge.getText();
String birthDay = datepick.getText();
if
(userName.isEmpty()) {
MessageHelper.ShowMessage(
"姓名不能为空!"
);
return
;
}
if
(age.isEmpty()) {
MessageHelper.ShowMessage(
"年龄不能为空!"
);
return
;
}
if
(birthDay.isEmpty()) {
MessageHelper.ShowMessage(
"出生日期不能为空!"
);
return
;
}
DateFormat df = DateFormat.getDateInstance();
try
{
Date dt = df.parse(birthDay);
if
(dt.before(df.parse(
"1920-01-01 00:00:01"
))
|| dt.after(df.parse(
"2000-01-01 00:00:01"
))) {
MessageHelper.ShowMessage(
"出生年份必须在1920至2000年之间!"
);
return
;
}
}
catch
(ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if
(chkPhoto.isSelected()) {
if
(photoPath ==
null
|| photoPath ==
""
) {
MessageHelper.ShowMessage(
"请选择图片!"
);
return
;
}
}
String sql =
"UPDATE TOP(1) dbo.UerInfo SET Name=?,Sex=?,Age=?,BirthDay=?"
;
if
(photoPath !=
""
&& chkPhoto.isSelected()) {
sql +=
",Photo=?"
;
}
sql +=
" WHERE useNo='"
+ FrmLogin.user.getUserNo() +
"'"
;
Connection con = JDBCSqlHelper.GetConnection();
try
{
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(
1
, userName);
stmt.setString(
2
, sex==
"男"
?
"1"
:
"0"
);
stmt.setInt(
3
, Integer.parseInt(age));
SimpleDateFormat sdf =
new
SimpleDateFormat();
sdf.applyPattern(
"yyyy-MM-dd"
);
Date dt =
new
Date();
try
{
dt = sdf.parse(birthDay);
}
catch
(ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt.setDate(
4
,
new
java.sql.Date(dt.getDate()));
if
(photoPath !=
""
&& chkPhoto.isSelected()) {
File fl =
new
File(photoPath);
FileInputStream fis =
new
FileInputStream(fl);
stmt.setBinaryStream(
5
, fis, (
int
) fl.length());
}
stmt.executeUpdate();
MessageHelper.ShowMessage(
"保存成功!"
);
this
.dispose();
}
catch
(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
|
进过一系列的验证之后,拼成修改的Sql语句,然后保存进sqlserver。重点是这里的图片保存
主要是获取文件长度和文件流。
1
2
3
|
File fl =
new
File(photoPath);
FileInputStream fis =
new
FileInputStream(fl);
stmt.setBinaryStream(
5
, fis, (
int
) fl.length());
|
我们试着来保存一条。
哇靠,这是个什么控件,我也不知道,从网上下载的。选择完生日之后,会自动根据选择的生日计算它的年龄,所以这里的年龄的框框是IsEditable=false的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
datepick.getInnerTextField().addCaretListener(
new
CaretListener() {
public
void
caretUpdate(CaretEvent e) {
String date = datepick.getText();
if
(date.trim() ==
""
)
return
;
SimpleDateFormat df =
new
SimpleDateFormat();
df.applyPattern(
"yyyy-MM-dd hh:mm:ss"
);
try
{
Date dt = df.parse(date);
int
age =
new
Date().getYear() - dt.getYear();
fmtAge.setText(String.valueOf(age));
}
catch
(ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
|
用当前年份减去选择的年份,大概算出年龄,我们输入完所有的信息后,点击保存
保存成功了,我们重新登陆一下,看照片变了没有。
输入完密码,登录
成功了,到此,我们这一部分的就全部结束了。
最后,我们看一下今天到底啥惊喜呢?对于学网络的人来说这个可能不算什么。前几天我想从网上买个无线路由,然后配置好后,使用手机的Wlan。可是看了一些,价格都比较贵,100以上。我最近很穷,买不起。偶尔看到一篇文章说是有些笔记本可以发射无线网络信号。我想我的dell 1420可能没戏吧,于是试了一下,不行也就算了,大不了工资发了一咬牙每一个无线路由。开始吧
我的系统是Win7,打开cmd输入如下命令
1
|
netsh wlan
set
hostednetwork mode=allow ssid=binglanPC key=你的Wlan密码
|
这段命令的意思是允许虚拟Wifi网卡,无线网络名称是lileiPC,key是密码自己设。
完了之后我们去控制面板看一下(控制面板\所有控制面板项\网络和共享中心)
点击宽带连接,弹出如下界面
选择属性,弹出如下界面
勾选允许.....,家庭网络连接选择无线网络连接2,OK,点击确定,弹出如下
不用管,点击确定,完了之后就是启动了用如下命令
1
|
netsh wlan start hostednetwork
|
注意了,如果要停掉,可以把start改为Stop。
OK,承载成功。
OK,我们已经看到了我们创建的虚拟wifi,他可以访问internet。用手机试了一下也是没问题的,看优酷,PPTV杠杠的。
如果你在按照上面的设置中未能成功,首先看一下你的机器支持不支持虚拟wifi,输入命令
1
|
netsh wlan show drivers
|
如果显示的结果里支持的承载网络显示为是的话就可以
二是如果爆出什么无法启动承载网络,什么状态不对的。去windows 设备管理器下去看wifi适配器有没有开启。
OK,到此咋们的wifi就设置成功了,天比较冷,我还是在被窝里看书吧,手机也可以连笔wifi了,看电视剧也是不错的选择,火凤凰最近不错,或者结婚吧也行。