今天咱们来看一下用户信息修改界面,这部分关于Java Winform的博客今天到这里就是左后一篇了,更多的仍是有用到的再去挖。这篇完了以后咱们就进入java重拾的web实战。OK,废话很少说,今天还得到惊喜,什么惊喜呢,看完博客再给你说。java
用户信息修改的C#界面以下web
咱们再看一下java版本的界面sql
初始化代码以下windows
private void Init() { cmbSex.addItem("男"); cmbSex.addItem("女"); ButtonGroup btnGrp = new ButtonGroup(); btnGrp.add(radioBz); btnGrp.add(radioWh); btnGrp.setSelected(radioWh.getModel(), true); }
那咱们今天就要实现这个界面的功能。首先咱们先从右边的图片选择下手,点击浏览按钮,弹出文件选择框,选择图片文件,这里设置只支持jpg和GIFbash
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这个抽象类,并实现他的两个抽象方法网络
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"); } }
好了咱们看一下效果app
看到了吧标题,文件类型过滤都是咱们刚才设置的。好的,咱们就选择这个图片ide
图片就显示在了label中,好了,显示就是经过上面贴的这段代码实现的sqlserver
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,最后按比例缩放,勾选复选框是表示咱们要保存这个图片。this
接下来咱们看一下保存按钮作的事情
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。重点是这里的图片保存
主要是获取文件长度和文件流。
File fl = new File(photoPath); FileInputStream fis = new FileInputStream(fl); stmt.setBinaryStream(5, fis, (int) fl.length());
咱们试着来保存一条。
哇靠,这是个什么控件,我也不知道,从网上下载的。选择完生日以后,会自动根据选择的生日计算它的年龄,因此这里的年龄的框框是IsEditable=false的。
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输入以下命令
netsh wlan set hostednetwork mode=allow ssid=binglanPC key=你的Wlan密码
这段命令的意思是容许虚拟Wifi网卡,无线网络名称是lileiPC,key是密码本身设。
完了以后咱们去控制面板看一下(控制面板\全部控制面板项\网络和共享中心)
点击宽带链接,弹出以下界面
选择属性,弹出以下界面
勾选容许.....,家庭网络链接选择无线网络链接2,OK,点击肯定,弹出以下
不用管,点击肯定,完了以后就是启动了用以下命令
netsh wlan start hostednetwork
注意了,若是要停掉,能够把start改成Stop。
OK,承载成功。
OK,咱们已经看到了咱们建立的虚拟wifi,他能够访问internet。用手机试了一下也是没问题的,看优酷,PPTV杠杠的。
若是你在按照上面的设置中未能成功,首先看一下你的机器支持不支持虚拟wifi,输入命令
netsh wlan show drivers
若是显示的结果里支持的承载网络显示为是的话就能够
二是若是爆出什么没法启动承载网络,什么状态不对的。去windows 设备管理器下去看wifi适配器有没有开启。
OK,到此咋们的wifi就设置成功了,天比较冷,我仍是在被窝里看书吧,手机也能够连笔wifi了,看电视剧也是不错的选择,火凤凰最近不错,或者结婚吧也行。