ITEEDU

swing的版面结构

版面管理器

事件处理

鼠标事件

键盘事件处理

窗口与面板的使用

JInternalFrame的使用(窗口与面板)

JTabbedPane,JScroolPane,JScrolBa的使用

标签与按钮的使用与介绍

[复选框、选项按钮、列表方框、下拉式列表的使用与介绍]

表格(Table)的使用与介绍

JTable的事件处理

1文字输入组件的使用与介绍

树(Tree)的使用与介绍

对话框(Option Pane与Dialog)的使用与介绍

菜单与工具栏的使用与介绍

文件选择对话框,颜色选择对话框,分隔线的使用与介绍.

Slider,Timer,Progress的使用

7-2:JRadioButton的使用:

 java.lang.Object
    --java.awt.Component
      --java.awt.Container
       --javax.swing.JComponent
        --javax.swing.Abstractbutton
         --javax.swing.JToggleButton
            --javax.swing.JRadioButton

JRadioButtonBN J JToggleButton的一个了类,因此它也可以使用AbstractButton抽象类里的方法。如同前面所述,JChexkBox 主要用在多重选择时机,而JRadioButton则是运用在单一选择时机。

JRadioButton构造函数:

  • JRadioButton():建立一个新的JRadioButton.
  • JRadioButton(Icon icon):建立一个有图像但没有文字的JRadioButton.
  • JRadioButton(Icon icon,boolean selected):建立一个有图像但没有文字的JRadioButton,且设置其初始状态(有无被选取).
  • JRadioButton(String text):建立一个有文字的JRadioButton.
  • JRadioButton(String text,boolean selected):建立一个有文字的JRadioButton,且设置其初始状态(有无被选取)。
  • JRadioButton(String text,Icon icon):建立一个有文字且有图像的JRadioButton,初始状态为无被选取。
  • JRadioButton(String text,Icon icon,boolean selected):建立一个有文字且有图像的JRadioButton,且设置其初始状态(有无被选取)。

7-2-1:构造JRadioButton组件与事件处理:

import java.awt.*;
     import java.awt.event.*;
     import javax.swing.*;
     
     public class JRadioButton1 implements ItemListener
     {
     JFrame f = null;
     JRadioButton r4 = null;
     JRadioButton r5 = null;
     
     JRadioButton1(){
     f = new JFrame("JRadioButton");
     Container contentPane = f.getContentPane();
     contentPane.setLayout(new GridLayout(2,1));
     JPanel p1 = new JPanel();
     p1.setLayout(new GridLayout(1,3));
     p1.setBorder(BorderFactory.createTitledBorder("您最喜欢哪一家速食店呢?")); 
     JRadioButton r1 = new JRadioButton("麦当劳");
     JRadioButton r2 = new JRadioButton("肯德鸡");
     JRadioButton r3 = new JRadioButton("21世纪");
     p1.add(r1);
     p1.add(r2);
     p1.add(r3);
     JPanel p2 = new JPanel();
     p2.setLayout(new GridLayout(2,1));
     p2.setBorder(BorderFactory.createTitledBorder("您喜欢哪种程序语言? 喜欢的请打勾")); 
     r4 = new JRadioButton("JAVA",new ImageIcon(".\\icons\\x.jpg"));
     r5 = new JRadioButton("C++",new ImageIcon(".\\icons\\x.jpg"));
     r4.addItemListener(this);
     r5.addItemListener(this);
     p2.add(r4);
     p2.add(r5);
     contentPane.add(p1);
     contentPane.add(p2);
     f.pack();
     f.show();
     f.addWindowListener(new WindowAdapter() {
     public void windowClosing(WindowEvent e) {
     System.exit(0);
     }
     });
     }
     
     public void itemStateChanged(ItemEvent e)
     {
     if (e.getStateChange() == e.SELECTED)
     {
     if(e.getSource() == r4)
     r4.setIcon(new ImageIcon(".\\icons\\r.jpg"));
     if(e.getSource() == r5)
     r5.setIcon(new ImageIcon(".\\icons\\r.jpg"));
     
     }
     else
     {
     if(e.getSource() == r4)
     r4.setIcon(new ImageIcon(".\\icons\\x.jpg"));
     if(e.getSource() == r5)
     r5.setIcon(new ImageIcon(".\\icons\\x.jpg"));
     }
     }
     
     public static void main(String args[])
     {
     new JRadioButton1();
     }
     }

要将RadioButton改成单选,我们必须用到ButtonGroup这个类。这个类位于javax.swing这个package下面,ButtonGroup类的主 要功能是:同一时间内只会有一个组件的状态为"on",其他皆为"off",也就是同一时间只有一个组件会被选取。而ButtonGroup类可 被AbstractButton下面的子类所使用,最常被使用的就是JRadioButton、JradioButtonMenu、Item与JToggleButton这些组件。

下面是ButtonGroup的类层次结构图:

ButtonGroup的类层次结构图:
java.lang.Object
     --javax.swing.ButtonGroup

我们更改上例,使RadioButton变成单选吧!

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JRadioButton2 implements ItemListener {
	JFrame f = null;
	JRadioButton r4 = null;
	JRadioButton r5 = null;

	JRadioButton2() {
		f = new JFrame("JRadioButton2");
		Container contentPane = f.getContentPane();
		contentPane.setLayout(new GridLayout(2, 1));
		JPanel p1 = new JPanel();
		p1.setLayout(new GridLayout(1, 3));
		p1.setBorder(BorderFactory.createTitledBorder("你最喜欢哪一家快餐店呢?"));
		JRadioButton r1 = new JRadioButton("麦当劳");
		JRadioButton r2 = new JRadioButton("肯德基");
		JRadioButton r3 = new JRadioButton("21世纪");
		p1.add(r1);
		p1.add(r2);
		p1.add(r3);
		/*
		 * 将3个RadioButton对象放进ButtonGroup中,表示此3个RadioButton同一时间只有一个RadioButton的状态可以为
		 * "on";
		 */
		ButtonGroup bgroup1 = new ButtonGroup();
		bgroup1.add(r1);
		bgroup1.add(r2);
		bgroup1.add(r3);
		JPanel p2 = new JPanel();
		p2.setLayout(new GridLayout(2, 1));
		p2.setBorder(BorderFactory.createTitledBorder("你最喜欢哪种程序语言,喜欢的请打勾:"));
		r4 = new JRadioButton("java", new ImageIcon(".\\icons\\x.jpg"));
		r5 = new JRadioButton("c++", new ImageIcon(".\\icons\\x.jpg"));
		r4.addItemListener(this);
		r5.addItemListener(this);
		p2.add(r4);
		p2.add(r5);
		ButtonGroup bgroup2 = new ButtonGroup();
		bgroup2.add(r4);
		bgroup2.add(r5);
		contentPane.add(p1);
		contentPane.add(p2);
		f.pack();
		f.show();
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public void itemStateChanged(ItemEvent e) {
		if (e.getStateChange() == e.SELECTED) {
			if (e.getSource() == r4)
				r4.setIcon(new ImageIcon(".\\icons\\r.jpg"));
			if (e.getSource() == r5)
				r5.setIcon(new ImageIcon(".\\icons\\r.jpg"));
		} else {
			if (e.getSource() == r4)
				r4.setIcon(new ImageIcon(".\\icons\\x.jpg"));
			if (e.getSource() == r5)
				r5.setIcon(new ImageIcon(".\\icons\\x.jpg"));
		}
	}

	public static void main(String[] args) {
		new JRadioButton2();
	}
}