this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); }
/*创建触发事件*/
public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals(\)){
JOptionPane.showMessageDialog(null,\弹出对话框\); //弹出选项面板对话框 } } }
运行结果如下:
说明:setToolTipText()方法是为按钮设置提示文本,setEnable()方法是设置按钮是否可用。
? 单选按钮组件JRadioButton
在默认情况下,单选按钮(JradioButton)显示一个圆形图标,并且通常在该图标旁放置一些说明性文字,而在应用程序中,一般将多个单选按钮放置在按钮组中,使这些单选按钮表现出某种功能,当用户选中某个单选按钮后,按钮组中其他按钮将被自动取消。单选按钮是Swing组件中JradioButton类的对象,该类是JtoggleButton的子类,而JtoggleButton类又是AbstractButton类的子类,所以控制单选按钮的诸多方法都是AbstractButton类中的方法。 按钮组ButtonGroup
在Swing中存在一个ButtonGroup类,用于产生按钮组,如果希望将所有的单选按钮放置在按钮组中,需要实例化一个ButtonGroup对象,并使用该对象调用add()方法添加单选按钮。 例子
import java.awt.*; import javax.swing.*;
public class Test extends JFrame{ /*定义组件*/
private JLabel jl;
private JRadioButton an1,an2,an3; private ButtonGroup anzu1;
public static void main(String[] args){ Test T=new Test(); //创建本类对象 T.setVisible(true); //设置显示窗体
}
public Test() {
Container c=this.getContentPane(); /*设置窗体布局管理器*/
c.setLayout(new GridLayout(4, 1)); /*创建组件*/
jl=new JLabel(\请选择您的月薪:\,SwingConstants.LEFT); an1=new JRadioButton(\元~2000元\); an2=new JRadioButton(\元~3500元\); an3=new JRadioButton(\元~5000元\); anzu1=new ButtonGroup(); /*设置组件属性*/
an1.setSelected(true); anzu1.add(an1); anzu1.add(an2); anzu1.add(an3); /*为按钮添加事件*/ /*添加组件*/ c.add(jl); c.add(an1); c.add(an2); c.add(an3);
/*设置窗体属性*/
this.setTitle(\单选按钮\); this.setSize(200, 150); Dimension
screenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((screenSize.width-this.getWidth())/2,(screenSize.height-this.getHeight())/2); this.setResizable(false);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); }
/*创建触发事件*/ }
运行结果如下:
注:从中可以看出,实质上单选按钮与提交按钮的用法基本类似,只是实例化单选按钮对象后需要将其添加至按钮组中。如果将单选按钮添加至容器,需要一个一个的添加,而不是将按钮组ButtonGroup添加到相应的容器中。 ? 复选框组件JcheckBox
复选框(JcheckBox)在Swing组件中的使用也非常广泛,它具有一个方块图标,外加一段描述性文字。与单选按钮唯一不同的是复选框可以进行多选设置,每一个复选框都提供“选中”与“不选中”两种状态。复选框由JcheckBox类的对象表示,它同样继承于AbstractButton类,所以复选框组件的属性设置也来源于AbstractButton类。 例子
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class Test extends JFrame{ /*定义组件*/
private JPanel mb1,mb2; private JTextArea jt; private JScrollPane mb3;
private JCheckBox jc1,jc2,jc3;
public static void main(String[] args){ Test T=new Test(); //创建本类对象 T.setVisible(true); //设置显示窗体 }
public Test() {
Container c=this.getContentPane(); /*设置窗体布局管理器*/
c.setLayout(new BorderLayout()); /*创建组件*/
jt=new JTextArea(3,10); mb3=new JScrollPane(jt); jc1=new JCheckBox(\房子\); jc2=new JCheckBox(\汽车\); jc3=new JCheckBox(\其他\);
mb1=new JPanel(); mb2=new JPanel(); /*设置组件属性*/ /*为按钮添加事件*/
jc1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jt.setText(null);
jt.append(\您选择了房子\); } });
jc2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jt.setText(null);
jt.append(\您选择了汽车\); } });
jc3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jt.setText(null);
jt.append(\您选择了其他\); } });
/*添加组件*/ mb1.add(mb3);
mb2.add(jc1); mb2.add(jc2); mb2.add(jc3); c.add(mb1,BorderLayout.NORTH); c.add(mb2,BorderLayout.SOUTH); /*设置窗体属性*/
this.setTitle(\复选框\); this.setSize(200, 150); Dimension
screenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((screenSize.width-this.getWidth())/2,(screenSize.height-this.getHeight())/2); this.setResizable(false);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
运行结果如下:
注:JtextArea类中的setText()方法可以删除旧文本,其中的append()方法可以追加文本。
九、列表组件
Swing中提供了两种列表组件,分别为下拉列表框与列表框。下拉列表框与列表框都是带有一系列项目的组件,用户可以从中选择需要的项目。列表框较下拉列表框更直观一些,它将所有的项目罗列在列表框中;但下拉列表框较列表框更为便捷和美观,它将所有的项目隐藏起来,当用户选用其中的项目时才会显现出来。 ? 下拉列表框组件JcomboBox 1、JcomboBox类
初次使用Swing中的下拉列表框时,会感觉到该类下拉列表框与Windows操作系统中的下拉列表框有一些相似,实质上两者并不完全相同,因为Swing中的下拉列表框不仅可以供用户从中选择项目,同时也提供编辑项目中内容的功能。
下拉列表框是一个带条状的显示区,它具有下拉功能,在下拉列表框的右方存在一个倒三角形的按钮,当用户单击该按钮时,下拉列表框中的项目将会以列表形式显示出来。
Swing中的下拉列表框使用JcomboBox类对象来表示,它是javax.swing.Jcomponent类的子类。它的常用构造方法如下: public JComboBox(); public JComboBox(ComboBoxModel dataModel); public JComboBox(Object[] arrayData); public JComboBox(Vector vector); 2、JComboBox模型
在开发程序中,一般将下拉列表框中的项目封装为ComboBoxModel的情况比较多。ComboBoxModel为接口,它代表一般模型,可以自定义一个类实现该接口,然后在初始化JComboBox对象时向上转型为ComboBoxModel接口类型,但是必须实现其中的方法。
自定义这个类除了实现该接口之外,还可以继承AbstractListModel类,在该类中也有两个操作下拉列表框的重要方法。 例子
import java.awt.*; import javax.swing.*;
public class Test extends JFrame { /* 定义组件 */
private JLabel jl1; private JComboBox jc1;
public static void main(String[] args) { Test T = new Test(); // 创建本类对象 T.setVisible(true); // 设置显示窗体 }
public Test() {
Container c = this.getContentPane(); /* 设置窗体布局管理器 */
c.setLayout(new FlowLayout()); /* 创建组件 */
jl1 = new JLabel(\请选择身份:\);
jc1 = new JComboBox(new MyComboBoxModel()); /* 设置组件属性 */