1、生成一个带有click按钮(无任何功能)的窗口
package package_1;
import javax.swing.*;
public class A {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame=new JFrame();//创建frame
JButton button=new JButton("click");//创建button
frame.getContentPane().add(button);//把button加到frame的pane上
frame.setSize(300,300);//设定frame大小
frame.setVisible(true);//把frame显示出来
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//在windows关闭后结束程序
}
}
- JFrame,JButton,JRadioButton,JCheckBox,JList,JLabel等Swing组件都在javax.swing包中,要import
- 创建window:JFrame frame=new JFrame()
- 加入按钮或文字字段:frame.getContentPane().add(····)
- JFrame不能直接加上组件,要用content pane
2、取得按钮的ActionEvent,按下按钮后执行方法
package package_1;
import javax.swing.*;
import java.awt.event.*;
public class A implements ActionListener{
JButton button;
public void go() {
JFrame frame=new JFrame();
button=new JButton("click");
button.addActionListener(this);//向按钮注册,告诉他要监听事件
frame.getContentPane().add(button);//把button加到frame的pane上
frame.setSize(300,300);//设定frame大小
frame.setVisible(true);//显示frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//windows关闭后,结束程序
}
//按钮以ActionEvent对象作为参数调用此方法
//实现interface的方法
public void actionPerformed(ActionEvent event) {
button.setText("i've been clicked!");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A a=new A();
a.go();
}
}
首先,我们先理清一下监听,事件源,事件对象的关系。
Swing的GUI组件就是事件源,事件源是一个可以将用户操作(点击鼠标,按键等)转换成事件的对象。
每个事件类型都有相应的监听者接口,实现接口的相关知识第六章已经介绍,此处不赘述。
简言之,监听获知事件;事件源发出事件;事件对象携带事件信息。
- 监听:实现接口并向按钮注册,让按钮知道你要开始监听事件了
- 事件源:接受注册,取得用户事件,并在用户采取操作时调用监听到的事件的处理方法
- 事件对象:作为调用接口方法的参数,把事件信息带给监听者
怎么给按钮增加功能?首先得想办法知道“按下了按钮”这件事,之后再调用执行功能的方法。
怎么才能知道“按下了按钮”呢?监听事件的接口。监听接口就是监听(你)和事件源(按钮)的桥梁。
怎么监听接口呢?先实现接口ActionListener,通过调用addActionListener()并传入引用来向按钮注册,同时ActionEvent对象作为参数被按钮存入清单,当用户按下按钮,按钮会通过调用清单上每个监听的actionPerformed()来启动事件
事实上,实现接口就意味着A是个ActionListener(事件只会通知有实现ActionListener的类)
BY ZJQ