GUI程式設計基礎學習(三)——單選按鈕、複選框、組合框
單選按鈕JRadioButton
JRadioButton元件用於實現一個單選按鈕。JRadioButton類可以單獨使用,也可以與ButtonGroup類聯合使用,當其單獨使用時,該單選按鈕可以被選定和被取消選定;當與ButtonGroup類聯合使用時,需要使用add()方法將JRadioButton新增到ButtonGroup中,組成一個單選按鈕按鈕組,此時使用者只能選定按鈕組中的一個單選按鈕。
JRadioButton常用構造方法:
①JRadioButton(Icon icon):建立一個帶圖示的單選按鈕
②JRadioButton(Icon icon,boolean isSeleted):建立一個帶圖示的單選按鈕,可以設定其是否被選中
③JRadioButton(String text):建立一個帶文字的單選按鈕
④JRadioButton(String text,boolean isSelected):建立一個帶文字的單選按鈕,可以設定其是否被選中
⑤JRadioButton(String text,Icon icon,boolean isSelected):建立一個帶文字圖示和指定選中狀態的單選按鈕
JRadioButton常用方法:
①setText(String text):設定單選按鈕使用的文字
②setSelected(boolean isSelected):設定單選按鈕的選中狀態
③setIcon(Icon icon):設定單選按鈕使用到的圖示
案例:使用單選按鈕選擇你的居住城市,點選提交按鈕,彈框顯示自己的選擇。
import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class Client extends JFrame{ public Client(){ JButton submit = new JButton("提交"); this.getContentPane().add(new JLabel("選擇你居住的城市:")); JRadioButton button1 = new JRadioButton("北京");//例項化四個單選按鈕物件 JRadioButton button2 = new JRadioButton("上海"); JRadioButton button3 = new JRadioButton("南昌"); JRadioButton button4 = new JRadioButton("杭州"); ButtonGroup buttonGroup = new ButtonGroup();//例項化一個單選按鈕組 buttonGroup.add(button1);//向單選按鈕組新增單選按鈕 buttonGroup.add(button2); buttonGroup.add(button3); buttonGroup.add(button4); this.getContentPane().setLayout(new FlowLayout());//設定佈局為流佈局 this.getContentPane().add(button1);//新增單選按鈕 this.getContentPane().add(button2); this.getContentPane().add(button3); this.getContentPane().add(button4); this.getContentPane().add(submit);//新增提交按鈕 button1.setSelected(true);//設定北京單選按鈕選中狀態 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//當用戶點選窗體右上角x時自動退出程式 pack();//自適應 setVisible(true);//展示窗體 setLocationRelativeTo(null);//讓視窗顯示在螢幕正中間 submit.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if(button1.isSelected()){ JOptionPane.showMessageDialog(null, "你目前住在北京。"); }else if(button2.isSelected()){ JOptionPane.showMessageDialog(null, "你目前住在上海。"); }else if(button3.isSelected()){ JOptionPane.showMessageDialog(null, "你目前住在南昌。"); }else{ JOptionPane.showMessageDialog(null, "你目前住在杭州。"); } } }); } public static void main(String[] args) { new Client(); } }
複選框JCheckBox
使用複選框可以進行多項選擇,Swing中的複選框和AWT的複選框相比,優點是Swing複選框中可以新增圖片。複選框可以為每一次的單機操作新增一個事件。
JCheckBox常用構造方法:
①JCheckBox(Icon icon):建立一個帶圖示的複選框
②JCheckBox(Icon icon,boolean isSelected):建立一個帶圖示以及指定選中狀態的複選框
③JCheckBox(String text):建立一個帶文字的複選框
④JCheckBox(String text,boolean isSelected):建立一個帶文字以及指定選中狀態的複選框
⑤JCheckBox(String text,Icon icon):建立一個帶文字和圖示的複選框
⑥JCheckBox(String text,Icon icon,boolean isSelected):建立一個帶文字和圖示以及指定選中狀態的複選框
JCheckBox常用方法:
①isSelected():返回複選框狀態,true時表示選中
②setSelected(boolean isSeleceted):設定複選框狀態
案例:使用複選框選擇你的愛好,點選提交按鈕,彈框顯示自己的選擇
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class Client extends JFrame{
public Client(){
JButton submit = new JButton("提交");
JCheckBox read = new JCheckBox("閱讀");
JCheckBox sing = new JCheckBox("唱歌");
JCheckBox dance = new JCheckBox("跳舞");
JCheckBox code = new JCheckBox("程式設計");
code.setSelected(true);//預設勾選程式設計複選框
this.getContentPane().setLayout(new FlowLayout());//設定內建面板佈局格式為流佈局
this.getContentPane().add(new JLabel("選擇你的愛好:"));//新增標籤到內建面板
this.getContentPane().add(read);//新增複選框到內建面板
this.getContentPane().add(sing);
this.getContentPane().add(dance);
this.getContentPane().add(code);
this.getContentPane().add(submit);//新增提交按鈕到內建面板
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//當用戶點選窗體右上角x時自動退出程式
pack();//自適應
setVisible(true);//展示窗體
setLocationRelativeTo(null);//讓視窗顯示在螢幕正中間
submit.addMouseListener(new MouseAdapter() {//新增點選事件
@Override
public void mouseClicked(MouseEvent e) {
String s = "你的愛好有";
int index = 0;
if(read.isSelected()){
if(index>0)
s += "、";
s+="閱讀";
index++;
}
if(sing.isSelected()){
if(index>0)
s += "、";
s+="唱歌";
index++;
}
if(dance.isSelected()){
if(index>0)
s += "、";
s+="跳舞";
index++;
}
if(code.isSelected()){
if(index>0)
s += "、";
s+="程式設計";
index++;
}
JOptionPane.showMessageDialog(null, s);//彈框
}
});
}
public static void main(String[] args) {
new Client();
}
}
組合框JComboBox
JComboBox元件用來建立組合框物件。根據組合框是否可編輯的狀態,可以將組合框分為兩種常見的外觀。可編輯狀態外觀是文字框和下拉列表的組合,不可編輯狀態外觀是按鈕和下拉列表的組合。在按鈕或文字的右側有一個帶有三角符號的下拉按鈕,使用者點選該按鈕,可以出現一個內容列表。組合框通常用於從列表的多個專案中選擇一個的操作。
JComboBox常用構造方法:
①JComboBox():建立一個預設模型的組合框
②JComboBox(ComboBoxModel model):建立一個指定模型的組合框
③JComboBox(Object[] items):建立一個具有指定陣列定義列表內容的組合框
案例:通過JComboBox設計一個選擇年齡和選擇喜歡水果的程式,點選提交按鈕,顯示選擇。
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Client extends JFrame{
public Client(){
JButton submit = new JButton("提交");
String[] ages = new String[100];
String[] fruits = {"西瓜","草莓","芒果","橙子"};
for(int i=0;i<100;i++){
ages[i] = i+"";
}
JComboBox comboBox1 = new JComboBox(ages);
JComboBox comboBox2 = new JComboBox(fruits);
comboBox1.setSelectedIndex(18);//預設18歲
comboBox1.setEditable(false);//不可編輯
comboBox2.setSelectedItem(fruits[2]);//預設芒果
comboBox2.setEditable(true);//可編輯
this.getContentPane().setLayout(new FlowLayout());//設定成流佈局
this.getContentPane().add(new JLabel("選擇你的年齡和最愛的水果:"));
this.getContentPane().add(comboBox1);//新增組合框到內建面板
this.getContentPane().add(comboBox2);
this.getContentPane().add(submit);//新增提交按鈕到內建面板
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//當用戶點選窗體右上角x時自動退出程式
pack();//自適應
setVisible(true);//展示窗體
setLocationRelativeTo(null);//讓視窗顯示在螢幕正中間
submit.addMouseListener(new MouseAdapter() {//新增點選事件
@Override
public void mouseClicked(MouseEvent e) {
String message = "你今年"+comboBox1.getSelectedItem()+"歲,你最愛的水果是"+comboBox2.getSelectedItem();
JOptionPane.showMessageDialog(null, message);
}
});
}
public static void main(String[] args) {
new Client();
}
}