GUI程式設計基礎學習(二)——標籤、文字框、按鈕
標籤JLabel
JLabel是一種常用的元件,一般用於顯示固定的文字資訊,同時它也可以顯示圖片:
JLabel常用構造方法:
①JLabel()
建立無影象並且其標題為空字串的 JLabel。
②JLabel(Icon image)
建立具有指定影象的 JLabel 例項。
③JLabel(Icon image, int horizontalAlignment)
建立具有指定影象和水平對齊方式的 JLabel 例項。
④JLabel(String text)
建立具有指定文字的 JLabel 例項。
⑤JLabel(String text, Icon icon, int horizontalAlignment)
⑥JLabel(String text, int horizontalAlignment)
建立具有指定文字和水平對齊方式的 JLabel 例項。
JLabel常用方法:
①getHorizontalAlignment()
返回標籤內容沿 X 軸的對齊方式。
②getHorizontalTextPosition()
返回標籤的文字相對其影象的水平位置。
③getIcon()
返回該標籤顯示的圖形影象(字形、圖示)。
④getText()
返回該標籤所顯示的文字字串。
⑤setHorizontalAlignment(int alignment)
設定標籤內容沿 X 軸的對齊方式。
⑥setHorizontalTextPosition(int textPosition)
設定標籤的文字相對其影象的水平位置。
⑦setIcon(Icon icon)
定義此元件將要顯示的圖示。
⑧setText(String text)
定義此元件將要顯示的單行文字。
⑨setVerticalAlignment(int alignment)
設定標籤內容沿 Y 軸的對齊方式。
⑩setVerticalTextPosition(int textPosition)
文字框(JTextField和JPasswordField)
JTextField元件用於建立文字框。文字框一般是用來接收單行文字資訊輸入的區域。當用戶輸入文字資訊後,如果為JTextField物件新增事件處理,按Enter鍵會激發一定的動作。
JTextField常用構造方法:
①JTextField():建立一個空的文字框。
②JTextField(String text):建立一個具有初始文字資訊text的文字框。
③JTextField(String text,int columns):建立一個具有初始文字資訊text以及指定列數的文字框。
JTextField常用方法:
①void setText(String text):設定文字框顯示內容。
②String getText():獲取文字框顯示內容。
JPasswordField是JTextField類的子類,是一種特殊的文字框。和文字框一樣,它也是用來接收單行文字資訊的輸入區域,但會用回顯字串替代掉輸入的文字資訊。因此JPasswordField也叫做密碼文字框。JPasswordField預設的回顯字元是*,使用者可以自行設定回顯字元。
JPasswordField常用構造方法:
①JPasswordField():建立一個空的密碼文字框。
②JPasswordField(String text):建立一個具有初始文字資訊的密碼文字框。
③JPasswordField(String text.int columns):建立一個具有初始文字資訊和指定列數的密碼文字框。
④JPasswordField(int columns):建立一個指定列數的密碼文字框。
JPasswordField常用方法:
①boolean echoCharIsSet():獲取是否設定了回顯字元的狀態。
②void setEchoChar(char c):設定回顯字元。
③char getEcho():獲取回顯字元。
④char[] getPassword():獲取密碼文字框的文字。
按鈕JButton
按鈕元件是GUI程式設計中最常用到的一種元件,它可以捕捉到使用者的單擊,同時利用按鈕事件處理機制響應使用者的請求。JButton是Swing提供的按鈕元件,按鈕上面不僅可以顯示文字資訊,也可以用來顯示圖示。
JButton常用構造方法:
①JButton(Icon icon):建立一個帶圖示的按鈕。
②JButton(String text):建立一個帶字元的按鈕。
③JButton(String text,Icon icon):建立一個既帶圖示又帶字元的按鈕。
JButton常用方法:
①setText(String text):設定按鈕的文字。
②setIcon(Icon defaultIcon):設定按鈕在預設狀態下顯示的圖示。
③setRolloverIcon(Icon rolloverIcon):設定游標移動到按鈕上方時顯示的圖示。
④setPressedIcon(Icon pressedIcon):設定當按鈕被按下時顯示的圖示。
⑤setContentAreaFilled(boolean b):設定按鈕的背景為透明,設定為true時按鈕將會繪製內容區域。如果希望有一個透明的按鈕。那麼應該將此屬性設定為false。預設繪製內容區域。
⑥setBorderPainted(boolean b):設定為不繪製按鈕的邊框。當此屬性設定成false時表示不繪製,預設為繪製。
綜合案例:利用JLabel、JTextField、JPassword、JButton實現一個登入框,使用者輸入賬號密碼,點選登入按鈕,如果使用者名稱和密碼正確,提示登入成功。
使用兩個JLabel做賬號框和密碼框的左側的標籤,使用JTextField做賬號框,PasswordField做密碼框,JButton做登入按鈕,當用戶輸入admin為賬號,12345為密碼時,提示登入成功,否則提示登入失敗並清空框內資訊。
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Client extends JFrame{
public Client(){
JLabel label_account = new JLabel("賬號:",JLabel.CENTER);//標籤
JLabel label_password = new JLabel("密碼:",JLabel.CENTER);//標籤
JTextField account = new JTextField(10);//指定十列寬度的文字框
JPasswordField password = new JPasswordField(10);//建立十列寬度的密碼框
JButton submit = new JButton("登入");//建立登入按鈕
this.getContentPane().setLayout(new BorderLayout());//設定窗體內建面板佈局格式
JPanel centerPanel = new JPanel(new GridLayout(2,2,1,1));//設定中心面板佈局格式
centerPanel.add(label_account);//新增元件
centerPanel.add(account);
centerPanel.add(label_password);
centerPanel.add(password);
this.getContentPane().add(centerPanel,BorderLayout.CENTER);//新增中心面板到窗體內建面板中心
this.getContentPane().add(submit,BorderLayout.SOUTH);//新增登入按鈕到窗體內建面板南部
this.pack();//自適應
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//當用戶點選窗體右上角x時自動推出程式
this.setLocationRelativeTo(null);//讓窗體顯示在螢幕正中間
//給按鈕新增點選事件
submit.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
String s1 = account.getText();//獲取輸入的賬號資訊
String s2 = password.getText();//獲取輸入的密碼資訊
if(s1.equals("admin")&&s2.equals("12345")){//登入成功
JOptionPane.showMessageDialog(null, "登入成功");//彈提示框
}else{//登入失敗
JOptionPane.showMessageDialog(null, "登入失敗,請重新輸入你的賬號密碼");//彈提示框
account.setText("");//清空賬號
password.setText("");//清空密碼
}
}
});
this.setVisible(true);//顯示窗體
}
public static void main(String[] args) {
new Client();
}
}
執行效果: