import javax.swing.*;
使用Swing组件时,实际操纵的是该组件类的对象。您通过调用构造函数来创建组件,然后调用相应的方法来正确的设置组件。所有的Swing组件都是抽象类JComponent的子类。
组件必须添加到容器(container)中后,才能显示在用户界面上。容器是可以放置其他组件的组件
在很多项目中,主界面对象都是框架(JFrame类)。框架是用户在计算机上启动应用程序时显示的窗口,无论该程序是使用哪种语言编写的。
public class FeedReader extends JFrame{
// body of class
}
将界面声明为JFrame的子类,这个类的构造函数需要完成下列几项工作:
setTitle(String)
// 设置标题
setSize(int,int)
// 设置宽和高
pack()
// 根据框架包含的组件大小相应的调整框架大小
show()
setVisible(boolean)
// 使框架可见
setBounds(int,int,int,int)
// 指定框架位置,前两个参数是框架左上角的(x,y)坐标,后两个是框架
// 的宽度和高度
setDefaultCloseOperator()
- EXIT_ON_CLOSE // 框架关闭时退出程序
- DISPOSE_ON_CLOSE
// 框架关闭时释放java虚拟机(JVM)内存中的框架对象,并继续运行应用程序。
- DO_NOTHING_ON_CLOSE // 让框架打开并继续运行程序
- HIDE_ON_CLOSE // 关闭框架并继续运行程序
前面说过,使用java编程时可定制用户界面的整体外观。Swing的这方面由javax.swing包中的UIManager类管理。要设置外观,可调用类方法setLookAndFeel(String),并将外观类的名称作为参数。下面的代码演示了如何将外观指定为Nimbus:
UIManeger.setLookAndFeel(
"com.sum.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
应将上述方法调用放在try-catch块内,因为它可能引发5种不同的异常。在不支持Nimbus的环境中,可捕获Exception异常并忽略它,这样将使用默认外观。
import javax.swing.*;
public class SimpleFrame extends JFrame {
public SimpleFrame() {
super("Frame Title");
setSize(300, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLookAndFeel();
setVisible(true);
}
private static void setLookAndFeel() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Exception exc) {
// ignore error
}
}
public static void main(String[] args) {
setLookAndFeel();
SimpleFrame sf = new SimpleFrame();
}
}
JButton play =new JButton("play"); //创建名为play的按钮
JPanel panel = new JPanel(); // 创建容器
panel.add(quit); // 将按钮添加到容器中
setEnable(boolean)
// 决定组件是否被启用
isEnabled()
// 返回布尔值,检查组件是否被启用
setVisible(boolean)
// 是否显示组件
getSize()
// 返回一个Dimension对象,该对象的实例变量height和width描述组件的大小
Swing支持在按钮和其他提供标签的组件上使用对象ImageIcon。要创建ImageIcon对象,可调用其构造函数,并将图形文件名作为参数传递给它。
ImageIcon subscribe = new ImageIcon("subscribe.gif");
标签是一个包含说明性文本、图标或两者都有的用户组件
JLabel label=new JLabel("URL: ",SwingConstants.CENTER);
// SwingConstants接口有三个静态类变量用于指定对齐方式
- LEFT
- CENTER
- RIGHT
setText(String)
// 设置标签文本
setIcon(Icon)
// 设置标签图标
getText()和getIcon()
// 获取文本和图标
文本框是界面上的一篇区域,用户可以通过键盘输入、修改其中的内容
JTextField rssUrl = new JTextField(60);
JTextField rssUrl2 = new JTextField("Enter feed URL here",60);
setEditable(boolean)
// 指定文本组件可编辑或不可编辑
isEditable()
// 返回相应boolean值
setText(string)
// 将文本修改为指定的字符串
getText()
// 将当前文本作为字符串返回
getSelectedText()
// 返回被选中的文本
密码框(password field)也是一个文本框,它将用户输入的字符隐藏起来。密码框通常由类JPasswordField表示,这是JTextField的一个子类。
JPasswordField codePhrase = new JPasswordField(20);
codePhrase.setEchoChar("#");
文本区域(text area)是能够处理多行输入的可编辑文本框,由类JTextArea实现。
JTextArea(int,int)
JTextArea(String,int,int)
// 行数和列数为指定值,且包含指定文本的文本区域
getText()
getSelectedText()
setText(String)
append(String)
// 将指定的文本加入到当前文本的末尾
insert(String,int)
// 将指定的文本插入到指定的位置
setLineWrap(boolean)
// 指定文本在达到组件边界时是否自动换行
setWrapStyleWord(boolean)
// 指定如何换行:是将当前单词(参数为true时)还是将当前字符(参数为false时)
// 换到下一行
Swing来通过一种新的容器JScrollPane来支持滚动条,它可以用来放置任何可滚动的组件。
JScrollPane(component)
// 包含指定组件的可滚动窗格
JScrollPane(component,int,int)
// 包含指定的组件,并带垂直滚动条和水平滚动条的可滚动窗格
复选框(JCheckBox类)是带标签或不带标签的框,选中时框中有一个复选标记,否则为空。单选按钮(JRadioButton)是一个圆圈,选中时有一个圆点,否则为空。
JCheckBox和JRadioButton类从其超类JToggleButton中继承一些很有用的方法
要将多个单选按钮组织成一组,只允许每次选中其中一个,可以创建一个ButtonGroup对象
ButtonGroup choice = new ButtonGroup();
对象ButtonGroup跟踪所有单选按钮,可以调用方法add(Component)将指定的组件加入到组中
Swing类JComboBox可用于创建组合框:提供一个下拉式菜单,用户可以从中选择一项。当组合框未被使用时,菜单被隐藏,这样它在GUI中占用的空间更小。
String[] formats = {"Atom","RSS 0.92","RSS 1.0","RSS 2.0"};
JComboBox formatBox = new JComboBox(formats);
常用方法:
getItemAt(int)
// 返回位于整数参数指定的索引位置的选项文本
getItemCount()
// 返回列表中的选项数目
getSelectedIndex()
// 返回当前选项的索引
getSelectedItem()
// 返回当前选项的文本
setSelectedIndex(int)
// 选定索引指定的选项
setSelectedIndex(Object)
// 选中指定的对象
列表是用类List表示的,它让用户能够从中选择一个或多个值
JList()
// 创建一个列表
setListData()
// 接受数组或矢量填充空列表
setVisibleRowCount(int)
// 并将要显示的项数作为参数
getSelectedValuesList(int)
// 返回对象列表,其中包含列表中所有被选中的项,可转换为ArrayList
String[] formats = {"Atom","RSS 0.92","RSS 1.0","RSS 2.0"};
JComboBox formatBox = new JComboBox(formats);