1. 程式人生 > >GUI程式設計基礎學習(三)——單選按鈕、複選框、組合框

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();
	}

}