import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class Frame extends JFrame {
JButton button;
JCheckBox checkBox1,checkBox2,checkBox3;//三个JCheckBox多选按钮
JLabel jlable1,jlable2; //JLable标签
JRadioButton radio1,radio2;//两个JRadioButton按钮
JPanel jpanel; //面板
Box box1,box2;
ButtonGroup group;
JScrollPane scrollPane;
GridLayout glayout;
JTextArea textArea;//文本
Listener listener;
public Frame(){ //构造方法
init();
click();
setVisible(true);//视图可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void click() {
checkBox1.addItemListener( listener); //为每个按钮设置监听器
checkBox2.addItemListener( listener);
checkBox3.addItemListener( listener);
radio1.addItemListener( listener);
radio2.addItemListener(listener);
}
private void init() {
jpanel=new JPanel(new GridLayout(2,2)); //定义GridLayout为两行
JLabel jlable1 = new JLabel("兴趣:");
checkBox1=new JCheckBox("羽毛球");
checkBox2=new JCheckBox("乒乓球");
checkBox3=new JCheckBox("唱歌");
add(checkBox1);
add(checkBox2);
add(checkBox3);
JLabel jlable2 = new JLabel("兴趣:");
group=new ButtonGroup();
radio1=new JRadioButton("男");
radio2=new JRadioButton("女");
group.add(radio1);
group.add(radio2);
add(radio1);
add(radio2);
Box box1=Box.createHorizontalBox();//行型Box容器
box1.add(Box.createHorizontalStrut(3));//设置标签按钮间距
box1.add( jlable1 );
box1.add(checkBox1 );
box1.add(checkBox2 );
box1.add(checkBox3);
Box box2=Box.createHorizontalBox();//行型Box容器
box1.add(Box.createHorizontalStrut(3));//设置标签按钮间距
box1.add( jlable2 );
box1.add(radio1 );
box1.add(radio2);
jpanel.add(box1) ;//两个行型Box容器放入JPanel面板中
jpanel.add(box2) ;
//scrollPane部分
textArea=new JTextArea();//文本区域
scrollPane = new JScrollPane(textArea);
add(jpanel,BorderLayout.NORTH);
add(scrollPane,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("JFrame窗口");//设置窗口属性
this.setSize(500,400);
this.setLocation(400, 400);
this.setVisible(true);
listener=new Listener();
}
private class Listener implements ItemListener { //创建监视器
public void itemStateChanged(ItemEvent e) {
String str = ""; //设置按钮的文本内容
if( checkBox1.isSelected())
str+=checkBox1.getText()+"\n";
if( checkBox2.isSelected())
str+=checkBox2.getText()+"\n";
if( checkBox3.isSelected())
str+=checkBox3.getText()+"\n";
if(radio1.isSelected())
str+=radio1.getText()+"\n";
if(radio2.isSelected())
str+=radio2.getText()+"\n";
textArea.setText("");
textArea.append(str);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Frame();
}
}
运行结果:
分析:事件的三要素:事件源、事件类型、事件监听器。产生事件的组件叫事件源。负责处理事件的对象称为事件监听器。事件监听器就是实现了监听器接口的类。