最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java Swing解析版:圖書管理系統(tǒng)(1)實戰(zhàn)項目開發(fā)

2020-04-06 19:53 作者:詩書畫唱  | 我要投稿


package swingPackage;


public class DiaoYongFangFa {

public static void main(String[] args) {

/* swing類 */

new swingClass();

/* JTable界面 */

// new JTableJieMian();


}


}

package swingPackage;


import java.awt.Color;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.FocusEvent;

import java.awt.event.FocusListener;


import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPasswordField;

import javax.swing.JRadioButton;

import javax.swing.JTextArea;

import javax.swing.JTextField;


///*每一個事件源需要一個監(jiān)聽器(ActionListener)


//ActionListener用于接收操作事件的偵聽器接口。對處理操作事件的類可以實現(xiàn)此接口,


//而使用該類創(chuàng)建的對象可使用組件的 addActionListener 方法向該組件注冊。


//在發(fā)生操作事件時,調(diào)用該對象的 actionPerformed 方法。


//接口focusListener的用于接收鍵盤焦點事件。過程焦點事件的類需要實現(xiàn)這個接口。


//implements是一個類,實現(xiàn)一個接口用的關(guān)鍵字,它是用來實現(xiàn)接口中定義的抽象方法。


//實現(xiàn)一個接口,必須實現(xiàn)接口中的所有方法。


//接口可以被多重實現(xiàn)(implements),抽象類只能被單一繼承(extends)*/


class shijian implements ActionListener, FocusListener {


static swingClass d = null;


/* 下面的是構(gòu)造方法,無void */


public shijian(swingClass dl) {


d = dl;


}


@Override

/*

*?

*?

*?

*?

*?

*?

*?

* actionperformed方法是ActionListener監(jiān)聽事件中的一個重寫方法,

*?

*?

*?

*?

*?

*?

*?

* 如果要求按鈕執(zhí)行一些動作,可以在這個方法中添加、修改、刪除以及判斷。

*/

/*

*?

* // * actionPerformed按鈕單擊方法。public void actionPerformed(ActionEvent e) //

*?

* * 這是接口ActionListener里面定義的一個抽象方法,所有實現(xiàn)這個接口的類都要重寫這個方法。 // *

*?

* 一般情況下,這是在編寫GUI程序時,組件發(fā)生“有意義”的事件時會調(diào)用這個方法,比如按鈕被按下, // *

*?

* 文本框內(nèi)輸入回車時都會觸發(fā)這個事件,然后調(diào)用你編寫的事件處理程序。 // *

*?

* 實現(xiàn)過程大體如下:編寫一個ActionListener類的偵聽器,組件注冊該偵聽器, // *

*?

* 偵聽器內(nèi)部要編寫這個actionPerformed方法。e可寫成arg0, arg: argument of a complex number

*?

* // * 復(fù)數(shù)的輻角,自變量(argument)。 arg0在Java中表示什么意思? // *

*?

* 就是一個變量名。可以自己定義,一般主函數(shù)里面?zhèn)鞯膮?shù)名叫args,取其中第一個就是:args[0],但也不是arg0, // *

*?

* 具體表示什么意思,從英語意義上來說的話,應(yīng)該是參數(shù)或者變量的第一個。 //

*/

public void actionPerformed(ActionEvent arg0) {


/*

*?

* 當(dāng)按鈕中字符為"登錄"時,就執(zhí)行equals("登錄")中的內(nèi)容。

*?

* 以“按紐”的事件為例,同一個JFrame里可能有多個按鈕的事件,為了避免沖突, 給每個按鈕設(shè)置不同的 ActionCommand,

*?

* 在監(jiān)聽時間的時候,用這個做條件區(qū)分事件,以做不同的響應(yīng)。

*?

* 而這個e.getActionCommand方法返回String,通過這個String能判斷是哪個按鈕觸發(fā)了事件。

*/


if (arg0.getActionCommand().equals("已經(jīng)注冊過,可直接登錄")) {


/* trim()函數(shù)移除字符串兩側(cè)的空白字符或其他預(yù)定義字符。 */


/*

*?

* swingClass.uname.getText().trim();翻譯一下:在下面的 public class

*?

* swingClass extends JFrame {} 中獲得去空格后得到的定義的unme的文本內(nèi)容“1”

*/


String uname = swingClass.uname.getText().trim();


/* uname.isEmpty() 翻譯一下:uname變量為空 */


String pwd = swingClass.pwd.getText().trim();


if (uname.isEmpty() || pwd.isEmpty()) {


JOptionPane.showMessageDialog(null, "用戶名或密碼為空");


} else {


if (uname.equals(yonghu.uname) && pwd.equals(yonghu.pwd)) {


JOptionPane.showMessageDialog(null, "用戶名和密碼輸入正確,可以登錄");


new ChengGongDengLuHouDejiemian();


/* JTable界面 */


/*

*?

* // * 用new實例化成功登錄后的界面的窗口, // * 調(diào)用顯示窗口的界面 //

*/


/* 將Class_DengLu中的登錄的界面設(shè)置為可見的(true)或隱藏的(false)。 */


new JTableJieMian();


d.setVisible(false);


} else {


JOptionPane.showMessageDialog(null, "用戶名或密碼輸入錯誤");


}


}


}


else if (arg0.getActionCommand().equals("沒注冊過,先注冊")) {


JOptionPane.showMessageDialog(null, "沒注冊過,先注冊");


} else {


/*

*?

* // * int o(o為OPTION“選擇”的縮寫) = JOptionPane.showConfirmDialog(null,

*?

* // * "是否確認(rèn)關(guān)閉頁面");就是在關(guān)閉一個界面東西 的時候, 還會跳出一個詢問框問是否要真的退出。 // * // *

*?

* setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // *

*?

* addWindowListener(new WindowAdapter(){ public void // *

*?

* windowClosing(WindowEvent e){ int o // *

*?

* =JOptionPane.showConfirmDialog(null,"退出?"); // *

*?

* if(o==JOptionPane.OK_OPTION){ System.exit(0); } } }); //

*/


int o = JOptionPane.showConfirmDialog(null, "是否確認(rèn)關(guān)閉頁面");


if (o == 0) {


/* exit()的參數(shù)是退出的狀態(tài)。慣例:為0是正常退出,非零為異常退出 */


System.exit(0);


}


}


}


/*

*?

*?

*?

*?

*?

*?

*?

* arg是java主函數(shù)的入口參數(shù),它是一個字符串?dāng)?shù)組變量 void focusGained(FocusEvent e):當(dāng)獲得焦點時發(fā)生.

*?

*?

*?

*?

*?

*?

*?

* void focusLost(FocusEvent e):當(dāng)失去焦點時發(fā)生.

*/


// /*


// * focusLost:此事件指示 Component 不再是焦點所有者。下面是事件方法。個人理解:“


// * 焦點”表示點擊了有內(nèi)容等框等。arg0.getSource() == Class_DengLu.uname翻譯:獲取的輸入框的內(nèi)容


// */


@Override

public void focusGained(FocusEvent arg0) {


if (arg0.getSource() == d.uname) {


/*

*?

* // * System.out.println("選中了用戶名框");顯示在編譯器上。這里的arg0.getSource() ==

*?

* // * Class_DengLu.uname翻譯:點擊了輸入框 //

*/


System.out.println("選中了用戶名框");


} else if (arg0.getSource() == d.pwd) {


// /* getSource方法返回的是對象 即觸發(fā)這個按鈕,執(zhí)行得到的 */


System.out.println("選中了密碼框");


} else if (arg0.getSource() == d.pwd1) {


System.out.println("選中了確認(rèn)密碼框");


}


}


@Override

public void focusLost(FocusEvent arg0) {


if (arg0.getSource() == d.uname) {


/* getSource獲得所選 */


String uname = d.uname.getText();


if (uname.isEmpty()) {


d.lb_uname_panduan.setText("請輸入用戶名");


d.lb_uname_panduan.setForeground(Color.red);


} else {


if (uname.length() > 12 || uname.length() == 0) {


d.lb_uname_panduan.setText("用戶名格式輸入錯誤");


d.lb_uname_panduan.setForeground(Color.red);


} else {


d.lb_uname_panduan.setText("用戶名輸入正確");


d.lb_uname_panduan.setForeground(Color.green);


}


}


} else if (arg0.getSource() == d.pwd) {


String pwd = d.pwd.getText().trim();


if (pwd.length() < 6 || pwd.length() == 0) {


d.lb_pwd_panduan.setText("密碼格式輸入錯誤,不可少于6位");


d.lb_pwd_panduan.setForeground(Color.red);


} else {


d.lb_pwd_panduan.setText("輸入正確");


d.lb_pwd_panduan.setForeground(Color.green);


}


/*

*?

* // * // * arg是java主函數(shù)的入口參數(shù),它是一個字符串?dāng)?shù)組變量 void

*?

* focusGained(FocusEvent e): 當(dāng)獲得焦點時發(fā)生. // * // * void

*?

* focusLost(FocusEvent e):當(dāng)失去焦點時發(fā)生. //

*/


// /*


// * focusGained:此事件指示 Component(組成部分) 現(xiàn)在是焦點所有者。


// *


// * 前面有class shijian implements ActionListener, FocusListener {}


// */


} else if (arg0.getSource() == d.pwd1) {/*

*?

*?

*?

* 做判斷兩次密碼是否一致的判斷

*?

*?

*?

*?

*?

*?

*?

* 先獲取第一次輸入的密碼,再獲取第二次輸入的密碼,

*?

*?

*?

* 然后比較一下兩次密碼是否一致不就完啦

*/


String pwd1 = d.pwd.getText().trim();// 獲取第一次的密碼


String pwd2 = d.pwd1.getText().trim();// 獲取第二次輸入的密碼.


if (pwd1.equals(pwd2)) {


d.lb_pwd_queren.setText("輸入正確");


d.lb_pwd_queren.setForeground(Color.GREEN);


} else {


d.lb_pwd_queren.setText("兩次密碼輸入不一致");


d.lb_pwd_queren.setForeground(Color.red);


}


}


}


}


//


// /*


// * JFrame是java中的一個類,它是一個容器,允許程序員把其他組件(Swing 的三個基本構(gòu)造塊:標(biāo)簽、


// * 按鈕和文本字段)添加到它里面,把它們組織起來,并把它們呈現(xiàn)給用戶。


// * JFrame是一個頂層的框架類,好比一個窗戶的框子。也是一個容器類。這個框子可以嵌入幾個玻璃窗。


// */


// /* JButton類是按鈕的實現(xiàn)。該組件具有標(biāo)簽,并在按下時生成事件。它也可以有一個圖像。 */


/*

?*?

?* 定義為靜態(tài)變量以便使用 ,CheckBox控件就是我們一般所說的復(fù)選框(選擇多個選項,“多選框”, 選愛好等), 通常用于某選項的打開或關(guān)閉

?*/


// static JCheckBox JCheckBox_aihao1, JCheckBox_aihao2,


// JCheckBox_aihao3 = null;


// /*


// * JComboBox類是一個組合按鈕或可編輯字段和下拉列表(LieBiao)的組件。


// */


// static JComboBox JComboBox_XiaLaLieBiao = null;


// /*


// * JLabel等是一些基礎(chǔ)組件,它必須置于某個容器里,類似于窗花、剪紙,必須置于窗戶的表面。


// * JLabel類可以顯示文本或圖像。通過在顯示區(qū)域中設(shè)置垂直和水平對齊來對齊標(biāo)簽的內(nèi)容。


// * 默認(rèn)情況下,標(biāo)簽在顯示區(qū)域中垂直居中。默認(rèn)情況下,純文本標(biāo)簽前沿對齊;


// * 默認(rèn)情況下,僅圖像標(biāo)簽水平居中。//原文出自【易百教程】,商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)


// * ,非商業(yè)請保留原文鏈接:https://www.yiibai.com/swing/swing_jlabel.html


// */


// static JLabel JLabel_uname, JLabel_qrmima, JLabel_sex, JLabel_aihao,


// JLabel_address,


//


// JLabel_jieshao, JLabel_uname_panduan, JLabel_pwd_panduan,


// JLabel_pwd,


//


// JLabel_pwd_queren = null;


// /* JPasswordField類是一個專門處理密碼功能并允許編輯單行文本的組件。 */


// static JPasswordField pwd, pwd1 = null;


// /* JRadioButton類是單選按鈕的實現(xiàn) ,可以選擇或取消選擇的項,并向用戶顯示其狀態(tài)。 */


// static JRadioButton JRadioButton_sex_man, JRadioButton_sex_woman = null;


// /* JTextArea類是一個顯示純文本的多行(DuoHang)區(qū)域。 */


// static JTextArea JTextArea_DuoHang = null;


// /* JTextField類是一個允許編輯單行文本的組件。Field領(lǐng)域美(美式 讀音音標(biāo):[fild]) */


// static JTextField JTextField_uname;


//


// /*


// * JFrame是java中的一個類,它是一個容器,允許程序員把其他組件(Swing 的三個基本構(gòu)造塊:標(biāo)簽、


// * 按鈕和文本字段)添加到它里面,把它們組織起來,并把它們呈現(xiàn)給用戶。


// * JFrame是一個頂層的框架類,好比一個窗戶的框子。也是一個容器類。這個框子可以嵌入幾個玻璃窗。


// */


/* JFrame f = new JFrame();創(chuàng)建FRame對象f,并用構(gòu)造方法進(jìn)行實例化 */


public class swingClass extends JFrame {


/*

*?

* // * 定義為靜態(tài)變量以便使用 ,CheckBox控件就是我們一般所說的復(fù)選框(選擇多個選項,“多選框”, 選愛好等),

*?

* 通常用于某選項的打開或關(guān)閉 //

*/


static JCheckBox aihao1, aihao2, aihao3 = null;


/*

*?

* // * JComboBox類是一個組合按鈕或可編輯字段和下拉列表(LieBiao)的組件。 //

*/


static JComboBox com1 = null;


/* JButton類是按鈕的實現(xiàn)。該組件具有標(biāo)簽,并在按下時生成事件。它也可以有一個圖像。 */


static JButton DengLuAnNu, QuXiaoAnNu, ZhuCeMiMaAnNu = null;


/* JTextArea類是一個顯示純文本的多行(DuoHang)區(qū)域。 */


static JTextArea jt1 = null;


/*

*?

* // * JLabel等是一些基礎(chǔ)組件,它必須置于某個容器里,類似于窗花、剪紙,必須置于窗戶的表面。 // *

*?

* JLabel類可以顯示文本或圖像。通過在顯示區(qū)域中設(shè)置垂直和水平對齊來對齊標(biāo)簽的內(nèi)容。 // *

*?

* 默認(rèn)情況下,標(biāo)簽在顯示區(qū)域中垂直居中。默認(rèn)情況下,純文本標(biāo)簽前沿對齊; // * 默認(rèn)情況下,僅圖像標(biāo)簽水平居中。 //

*/


static JLabel lb_uname, lb_qrmima, lb_sex, lb_aihao, lb_address,


lb_jieshao = null;


static JLabel lb_uname_panduan, lb_pwd_panduan, lb_pwd,


lb_pwd_queren = null;


/* JPasswordField類是一個專門處理密碼功能并允許編輯單行文本的組件。 */


static JPasswordField pwd, pwd1 = null;


/* JRadioButton類是單選按鈕的實現(xiàn) ,可以選擇或取消選擇的項,并向用戶顯示其狀態(tài)。 */


static JRadioButton sex_man, sex_woman = null;


/* JTextField類是一個允許編輯單行文本的組件。Field領(lǐng)域美(美式 讀音音標(biāo):[fild]) */


static JTextField uname;


shijian sj = new shijian(this);


/* this就是指對象自己,表示自己,在那個對象的成員函數(shù)里出現(xiàn)就表示哪個對象 */


public swingClass() {


/* 總界面設(shè)置 */


this.setTitle("登錄界面");


this.setSize(700, 600);


// location:地點

// relative:親屬

this.setLocationRelativeTo(null);


this.setLayout(null);


/* 用戶名 */


lb_uname = new JLabel("用戶名");


this.add(lb_uname);


lb_uname.setBounds(100, 100, 40, 30);


/* setBounds(x,y,size_x,size_y) */


uname = new JTextField(20);


uname.setBounds(180, 100, 140, 30);


uname.addFocusListener(sj);


this.add(uname);


lb_uname_panduan = new JLabel("用戶名長度不能大于12位");


lb_uname_panduan.setForeground(Color.red);


lb_uname_panduan.setBounds(330, 100, 250, 30);


this.add(lb_uname_panduan);


/* 密 碼 */


lb_pwd = new JLabel("密 碼");


this.add(lb_pwd);


lb_pwd.setBounds(100, 140, 40, 30);


pwd = new JPasswordField();


pwd.setBounds(180, 140, 140, 30);


pwd.addFocusListener(sj);


this.add(pwd);


lb_pwd_panduan = new JLabel("請輸入密 碼,不可少與6位");


lb_pwd_panduan.setForeground(Color.red);


lb_pwd_panduan.setBounds(330, 140, 240, 30);


this.add(lb_pwd_panduan);


// lb_pwd_panduan = new JLabel("請確認(rèn)密碼");


// lb_pwd_panduan.setForeground(Color.red);


// lb_pwd_panduan.setBounds(330, 140, 150, 30);


// this.add(lb_pwd_panduan);


/* 確認(rèn)密碼 */


lb_qrmima = new JLabel("確認(rèn)密碼");


lb_qrmima.setBounds(100, 180, 70, 30);


this.add(lb_qrmima);


pwd1 = new JPasswordField(20);


pwd1.setBounds(180, 180, 140, 30);


// pwd1.addFocusListener(sj);


pwd1.addFocusListener(new shijian(this));


this.add(pwd1);


lb_pwd_queren = new JLabel("請輸入和上一 次一致的密碼");


lb_pwd_queren.setForeground(Color.red);


lb_pwd_queren.setBounds(330, 180, 180, 30);


this.add(lb_pwd_queren);


lb_pwd_queren.addFocusListener(sj);


lb_sex = new JLabel("性別");


lb_sex.setBounds(100, 210, 70, 30);


this.add(lb_sex);


sex_woman = new JRadioButton("女");


sex_man = new JRadioButton("男", true);


sex_man.setBounds(180, 210, 70, 30);


sex_woman.setBounds(260, 210, 70, 30);


this.add(sex_man);


this.add(sex_woman);


ButtonGroup bg1 = new ButtonGroup();


bg1.add(sex_man);


bg1.add(sex_woman);


lb_aihao = new JLabel("愛好");


lb_aihao.setBounds(100, 250, 70, 30);


this.add(lb_aihao);


aihao1 = new JCheckBox("唱");


aihao2 = new JCheckBox("跳");


aihao3 = new JCheckBox("rap");


aihao1.setBounds(180, 250, 70, 30);


aihao2.setBounds(250, 250, 70, 30);


aihao3.setBounds(320, 250, 70, 30);


this.add(aihao1);


this.add(aihao2);


this.add(aihao3);


lb_address = new JLabel("家庭地址");


lb_address.setBounds(100, 290, 70, 30);


this.add(lb_address);


com1 = new JComboBox();

// item

//

// 一條

com1.addItem("請選擇家庭地址");


com1.addItem("北京");


com1.addItem("上海");


com1.addItem("廣州");


com1.setBounds(180, 290, 140, 30);


this.add(com1);


lb_jieshao = new JLabel("個人介紹");


lb_jieshao.setBounds(100, 330, 70, 30);


this.add(lb_jieshao);


jt1 = new JTextArea();


// columns:列


jt1.setColumns(8);


jt1.setRows(4);


jt1.setBounds(180, 330, 140, 40);


// wrap:換行;

/* setLineWrap:設(shè)置自動換行 */

jt1.setLineWrap(true);


this.add(jt1);


JButton btn_dl = new JButton("已經(jīng)注冊過,可直接登錄");


btn_dl.setBounds(20, 400, 180, 35);


QuXiaoAnNu = new JButton("取消");


ZhuCeMiMaAnNu = new JButton("沒注冊過,先注冊");


ZhuCeMiMaAnNu.setBounds(368, 400, 180, 35);


QuXiaoAnNu.setBounds(240, 400, 80, 35);


btn_dl.addActionListener(sj);


ZhuCeMiMaAnNu.addActionListener(sj);


QuXiaoAnNu.addActionListener(sj);


this.add(btn_dl);


this.add(ZhuCeMiMaAnNu);


this.add(QuXiaoAnNu);


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// visible

//

// 可見的

this.setVisible(true);


}


}


class yonghu {


static String pwd = "pwdpwd";


static String uname = "1";


}




Java Swing解析版:圖書管理系統(tǒng)(1)實戰(zhàn)項目開發(fā)的評論 (共 條)

分享到微博請遵守國家法律
留坝县| 兴安县| 文安县| 两当县| 蓝山县| 和林格尔县| 垣曲县| 田林县| 宝鸡市| 合江县| 屯门区| 赫章县| 凯里市| 静宁县| 霍邱县| 丰台区| 自贡市| 桐城市| 丰原市| 寿光市| 沧源| 敦化市| 佛冈县| 丹巴县| 永新县| 永康市| 偏关县| 秦皇岛市| 肥西县| 胶南市| 张掖市| 泾源县| 绥芬河市| 开原市| 涞源县| 施秉县| 台山市| 运城市| 鹤壁市| 南和县| 汶川县|