第9章 反转按钮、复选框和单选框
本章介绍三种Swing按钮:反转按钮、复选按钮和单选按钮,它们分别由JToggleButton、JCheckBox和JRadioButton类代表。
这三种按钮都是AbstractButton类的最终扩展。AbstractButton类实现了这三个类提供的几乎所有功能。有关AbstractButton类的更多信息,请参见第8章“标签与按钮”。
9.1 JToggleButton类
例9-1 JToggleButton的一个简单例子
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JApplet {
public Test() {
Container contentPane = getContentPane();
ImageIcon icon = new ImageIcon("togglebuttonImage.gif");
JToggleButton button = new JToggleButton(icon);
contentPane.setLayout(new FlowLayout());
contentPane.add(button);
}
}
9.1.1 JToggleButton属性
9.1.2 JToggleButton事件
例9-2 用一个子项监听器来处理反转按钮的选取操作
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Test extends JApplet {
public Test() {
Container contentPane = getContentPane();
ImageIcon icon = new ImageIcon("togglebuttonImage.gif");
final JToggleButton button = new JToggleButton(icon);
contentPane.setLayout(new FlowLayout());
contentPane.add(button);
button.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
int state = e.getStateChange();
String s;
if(state == ItemEvent.SELECTED) s = "selected";
else s = "deselected";
showStatus("Item Event: " + s);
}
});
}
}
9.1.3 JToggleButton类总结
例9-3 创建反转按钮
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JApplet {
public Test() {
Container contentPane = getContentPane();
Icon icon = new ImageIcon("beach_umbrella.gif");
JToggleButton button_1 = new JToggleButton(),
button_2 = new JToggleButton(icon),
button_3 = new JToggleButton(icon, true),
button_4 = new JToggleButton("beach"),
button_5 = new JToggleButton("beach",true),
button_6 = new JToggleButton("beach",icon),
button_7 = new JToggleButton("beach",icon,
true);
contentPane.setLayout(new FlowLayout());
contentPane.add(button_1);
contentPane.add(button_2);
contentPane.add(button_3);
contentPane.add(button_4);
contentPane.add(button_5);
contentPane.add(button_6);
contentPane.add(button_7);
}
}
9.1.4 AWT兼容
9.2 按钮框
例9-4 为相互排斥的选取行为使用一个按钮组
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JApplet {
public Test() {
Container contentPane = getContentPane();
ButtonGroup group = new ButtonGroup();
JToggleButton[] buttons = new JToggleButton[] {
new JToggleButton(new ImageIcon("ballot_box.gif")),
new JToggleButton(new ImageIcon("palette.gif")),
new JToggleButton(new ImageIcon("light_bulb1.gif")),
new JToggleButton(new ImageIcon("dining.gif")),
new JToggleButton(new ImageIcon("scissors.gif")),
new JToggleButton(new ImageIcon("tricycle.gif")),
};
Box box = Box.createVerticalBox();
for(int i=0; i < buttons.length; ++i) {
group.add(buttons[i]);
box.add(Box.createVerticalStrut(5));
box.add(buttons[i]);
}
box.add(Box.createVerticalStrut(5));
contentPane.add(box);
}
}
9.3 复选框
例9-5 运行中的Swing复选框
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JApplet {
public void init() {
Container contentPane = getContentPane();
contentPane.add(new PrintOptionsPanel(this), "Center");
}
}
class PrintOptionsPanel extends JPanel {
JCheckBox oddPages, evenPages, collate, lastFirst;
Listener listener = new Listener();
JApplet applet;
public PrintOptionsPanel(JApplet applet) {
this.applet = applet;
oddPages = new JCheckBox("Odd Pages");
evenPages = new JCheckBox("Even Pages");
collate = new JCheckBox("Collate");
lastFirst = new JCheckBox("Last Page First");
oddPages.addItemListener (listener);
evenPages.addItemListener(listener);
collate.addItemListener (listener);
lastFirst.addItemListener(listener);
add(oddPages);
add(evenPages);
add(collate);
add(lastFirst);
}
class Listener implements ItemListener {
public void itemStateChanged(ItemEvent event) {
applet.showStatus(
"Odd Pages: " + oddPages.isSelected() + ", " +
"Even Pages: " + evenPages.isSelected() + ", " +
"Collate: " + collate.isSelected() + ", " +
"Last Page First: " + lastFirst.isSelected());
}
}
}
9.3.1 JCheckBox属性
9.3.2 JCheckBox事件
9.3.3 JCheckBox类总结
例9-6 实例化复选框
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JApplet {
public Test() {
Container contentPane = getContentPane();
Icon icon = new ImageIcon("bulb.gif");
JCheckBox[] checkboxes = new JCheckBox[] {
new JCheckBox(),
new JCheckBox(icon),
new JCheckBox(icon, true),
new JCheckBox("idea!"),
new JCheckBox("idea!",true),
new JCheckBox("idea!",icon),
new JCheckBox("idea!",icon, true)
};
contentPane.setLayout(new FlowLayout());
for(int i=0; i < checkboxes.length; ++i) {
checkboxes[i].setBorderPainted(true);
contentPane.add(checkboxes[i]);
if(checkboxes[i].getIcon() != null) {
System.out.println("setting selected icon");
checkboxes[i].setSelectedIcon(
new ImageIcon("bulb_bright.gif"));
}
}
}
}
9.4 单选钮
例9-7 运行中的单选钮
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JApplet {
public void init() {
Container contentPane = getContentPane();
contentPane.add(new PrintRangePanel(100, 101));
}
}
class PrintRangePanel extends JPanel {
JRadioButton printAll, printRange;
JLabel startPage, endPage;
JTextField startField, endField;
public PrintRangePanel(int start, int end) {
ButtonGroup group= new ButtonGroup();
printAll = new JRadioButton("Print All");
printRange = new JRadioButton("Print Range");
startPage = new JLabel("Start Page:");
endPage = new JLabel("End Page:");
startField = new JTextField(Integer.toString(start));
endField = new JTextField(Integer.toString(end));
add(printAll); add(printRange);
add(startPage); add(startField);
add(endPage); add(endField);
printRange.setSelected(true);
group.add(printAll);
group.add(printRange);
printRange.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
if(printRange.isSelected()) {
startField.setEnabled(true);
endField.setEnabled (true);
startPage.setEnabled (true);
endPage.setEnabled (true);
//startPage.repaint();
//endPage.repaint();
startField.requestFocus();
}
}
});
printAll.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
if(printAll.isSelected()) {
startField.setEnabled(false);
endField.setEnabled (false);
startPage.setEnabled (false);
endPage.setEnabled (false);
startPage.repaint();
endPage.repaint();
}
}
});
}
}
9.4.1 JRadioButton属性
9.4.2 JRadioButton事件
9.4.3 JRadioButton类总结
例9-8 实例化单选按钮
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JApplet {
public Test() {
Container contentPane = getContentPane();
Icon icon = new ImageIcon("bulb.gif");
JRadioButton[] radioButtons = new JRadioButton[] {
new JRadioButton(),
new JRadioButton(icon),
new JRadioButton(icon, true),
new JRadioButton("idea!"),
new JRadioButton("idea!",true),
new JRadioButton("idea!",icon),
new JRadioButton("idea!",icon, true)
};
contentPane.setLayout(new FlowLayout());
for(int i=0; i < radioButtons.length; ++i) {
radioButtons[i].setBorderPainted(true);
contentPane.add(radioButtons[i]);
if(radioButtons[i].getIcon() != null) {
System.out.println("setting selected icon");
radioButtons[i].setSelectedIcon(
new ImageIcon("bulb_bright.gif"));
}
}
}
}
相关推荐
- JButton、JLabel、JTextField、JTextArea、JCheckBox、JRadioButton等:这些都是Swing中的基本组件,用于创建按钮、标签、文本输入框、多行文本区域、复选框和单选按钮等常见UI元素。 2. **布局管理**: - ...
《Java 2 图形设计卷Ⅱ:SWING》是一本深入探讨Java图形用户界面(GUI)编程的专业书籍,主要聚焦于SWING框架。在Java世界中,SWING是用于构建桌面应用程序的重要库,它提供了丰富的组件和功能,使得开发者能够创建...
Java 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rar
资源名称:Java2 图形设计 卷Ⅱ:Swing 内容简介:Swing是一流的Java图形用户界面开发工具。本书详细介绍了Swing的设计思想、体系结构、使用技巧,内容丰富、深入细致、分析透彻。本书用大量实例代码介绍了每个组件...
本资源"Java图形设计卷2 - Swing"很可能是对Swing组件、布局管理、事件处理、高级特性以及Swing在实际应用中的实践进行深入讲解的教程或指南。 Swing组件是轻量级的,意味着它们不依赖于操作系统提供的图形接口,...
一本比较经典的Swing的书。PDF版本。因为文件太大分为两部分。
根据提供的文件信息,我们可以推断出这是一份关于Java 2 Swing图形用户界面设计的教程或书籍资源。接下来,我们将围绕这份资料展开一系列与Swing相关的知识点介绍。 ### Java 2 Swing简介 Java 2平台提供了强大的...
本资源"Java 2 图形设计卷Ⅱ(Swing)"显然是深入探讨Swing组件和应用设计的专业教程。下面将详细阐述Swing在Java GUI开发中的重要性、主要组件以及其特性和用法。 Swing是在早期AWT(Abstract Window Toolkit)基础...
《Java2图形设计卷II:SWING》是深入探讨Java平台上的GUI(图形用户界面)开发的专业书籍,主要聚焦于SWING库的使用。SWING是Java标准版(Java SE)的一部分,为开发者提供了丰富的组件和功能,用于构建美观、交互性...
总结来说,Java 2图形设计卷ⅠAWT和卷ⅡSwing这两部分的学习将涵盖从基础的窗口和组件创建到复杂的用户交互和界面设计。理解并熟练掌握这两个库对于开发功能丰富的Java桌面应用至关重要。通过深入学习和实践,开发者...
Java2图形设计卷II:SWING.part2.rar 有目录,无缺页。
在"Java 2D图形设计卷-SWING"这本书中,你将深入了解到如何利用Java 2D API和SWING库来创建美观且交互性强的图形用户界面。以下是一些关键知识点的详细说明: 1. **Java 2D API**: Java 2D API 提供了对二维图形、...
这个"java_2_图形设计卷Ⅱ:swing.rar"压缩包文件显然包含了深入学习Swing的相关资源,特别是包含了一个名为"Java_2_图形设计卷Ⅱ:SWING.chm"的帮助文档,这通常是一份详细的教程或指南。 在Java Swing中,你可以...