JFrame
JFrame是个代表屏幕上window的对象。可以把button、checkbox、text字段等接口放在window上面。标准的menu也可以加到上面。
import javax.swing.*;
public class SimpleGui1 {
public static void main(String[] args) {
JFrame frame = new JFrame(); //创建frame
JButton button = new JButton("click me"); //创建button
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //这一行程序会在window关闭时结束程序
frame.getContentPane().add(button);
frame.setSize(300, 300); //设定frame大小
frame.setVisible(true); //显示frame
}
}
实现按钮功能
实现按钮功能:
- 按钮要知道它的作用。
- 按钮要在按键事件发生时调用执行功能的方法。
取得用户的事件
在Java中,取得处理用户操作事件的过程称为even-handling。Java中有许多不同的事件类型,大多数都与GUI上用户的操作有关。如果用户按下了按钮,就会产生事件。
监听
如果想要知道按钮的事件,就要监听事件的接口。
监听接口是介于监听和事件源间的桥梁。
Swing的GUI组件是事件的来源。以Java的术语说,事件来源是个可以将用户操作(点击鼠标、关闭窗口等)转换成事件的对象。对Java而言,事件几乎都是以对象来表示(事件类对象)。
事件源(例如按钮)会在用户做出相关动作时(按下按钮)产生事件对象。你的程序在大多数情况下是事件的接受方而不是创建方。也就是说,你会花较多的时间当监听者而不是事件来源。
每个事件类型都有相对应的监听者接口,想要接收MuoseEvent的话就实现Mouse Listener这个接口。记得接口的规则:要实现接口就得声明这件事,这代表你必须把接口中所有方法都实现出来。
监听和事件源的沟通
监听
如果类想要知道按钮的ActionEvent,就要实现ActionListener这个接口。按钮需要知道你关注的部分,因此要通过调用addActionListener(this)并传入ActionListener的引用(下面的例子里就是你自己的这个程序,所以用this)来向按钮注册。按钮会在该事件发生时调用该接口上的方法。作为一个ActionListener,编译器会确保你实现此接口的actionPerformed()。
事件源
按钮是ActionEvent的来源,因此它必须要知道有哪些对象是需要事件通知的。此按钮有个addActionListener()方法可以提供对事件有兴趣的对象(listener)一种表达此兴趣的方法。
当按钮的addActionListener()方法被调用是(因为某个listener的调用),它的参数会被按钮存到清单中。当用户按下按钮时,按钮会通过调用清单上的每个监听的actionPerformed()来启动事件。
取得按钮的ActionEvent
- 实现ActionListener这个接口。
- 向按钮注册(告诉它你要监听事件)。
- 定义事件处理方法(实现接口的方法)。
import javax.swing.*;
import java.awt.event.*;
public class SimpleGui1B implements ActionListener {
JButton button;
public static vo