今天咱們來看一下用戶信息修改界面,這部分關於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了,看電視劇也是不錯的選擇,火鳳凰最近不錯,或者結婚吧也行。