重拾JAVA之WinForm實戰之(六)

今天咱們來看一下用戶信息修改界面,這部分關於Java Winform的博客今天到這裏就是左後一篇了,更多的仍是有用到的再去挖。這篇完了以後咱們就進入java重拾的web實戰。OK,廢話很少說,今天還得到驚喜,什麼驚喜呢,看完博客再給你說。java

用戶信息修改的C#界面以下web

115107656.png

咱們再看一下java版本的界面sql

115158477.png

初始化代碼以下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

115827619.png

看到了吧標題,文件類型過濾都是咱們剛纔設置的。好的,咱們就選擇這個圖片ide

115948936.png

圖片就顯示在了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());

咱們試着來保存一條。

120907232.png

哇靠,這是個什麼控件,我也不知道,從網上下載的。選擇完生日以後,會自動根據選擇的生日計算它的年齡,因此這裏的年齡的框框是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();
                }
            }
        });

用當前年份減去選擇的年份,大概算出年齡,咱們輸入完全部的信息後,點擊保存

121304172.png

保存成功了,咱們從新登錄一下,看照片變了沒有。

121516136.png

輸入完密碼,登陸

121608889.png

成功了,到此,咱們這一部分的就所有結束了。


最後,咱們看一下今天到底啥驚喜呢?對於學網絡的人來講這個可能不算什麼。前幾天我想從網上買個無線路由,而後配置好後,使用手機的Wlan。但是看了一些,價格都比較貴,100以上。我最近很窮,買不起。偶爾看到一篇文章說是有些筆記本能夠發射無線網絡信號。我想個人dell 1420可能沒戲吧,因而試了一下,不行也就算了,大不了工資發了一咬牙每個無線路由。開始吧

個人系統是Win7,打開cmd輸入以下命令

netsh wlan set hostednetwork mode=allow ssid=binglanPC key=你的Wlan密碼

這段命令的意思是容許虛擬Wifi網卡,無線網絡名稱是lileiPC,key是密碼本身設。

130733376.png

完了以後咱們去控制面板看一下(控制面板\全部控制面板項\網絡和共享中心)

123139506.png

點擊寬帶鏈接,彈出以下界面

123309205.png

選擇屬性,彈出以下界面

130828698.png

勾選容許.....,家庭網絡鏈接選擇無線網絡鏈接2,OK,點擊肯定,彈出以下

123527890.png

不用管,點擊肯定,完了以後就是啓動了用以下命令

netsh wlan start hostednetwork

注意了,若是要停掉,能夠把start改成Stop。

131059833.png

OK,承載成功。

131132448.png

OK,咱們已經看到了咱們建立的虛擬wifi,他能夠訪問internet。用手機試了一下也是沒問題的,看優酷,PPTV槓槓的。

若是你在按照上面的設置中未能成功,首先看一下你的機器支持不支持虛擬wifi,輸入命令

netsh wlan show drivers

若是顯示的結果裏支持的承載網絡顯示爲是的話就能夠

131517705.png

二是若是爆出什麼沒法啓動承載網絡,什麼狀態不對的。去windows 設備管理器下去看wifi適配器有沒有開啓。

131733786.png

OK,到此咋們的wifi就設置成功了,天比較冷,我仍是在被窩裏看書吧,手機也能夠連筆wifi了,看電視劇也是不錯的選擇,火鳳凰最近不錯,或者結婚吧也行。

相關文章
相關標籤/搜索