与多线程、泛型等不同,Swing主要在于使用。
下面主要放代码和注释,少说话。
(一)共用代码
所有继承JFrame的类都要有一个开始的框架来包含他们,这里直接给出框架,以下几点中不会重复书写。
package Event;
import java.awt.*;
import javax.swing.*;
/**
*
* @author QuinnNorris
* 共用代码
*/
public class BaseFrame {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 开启一个线程,所有的Swing组件必须由事件分派线程进行配置,线程将鼠标点击和按键控制转移到用户接口组件。
EventQueue.invokeLater(new Runnable() {
// 匿名内部类,是一个Runnable接口的实例,实现了run方法
public void run() {
JFrame frame = new *********();
// 将*号的地方换成你实现的JFrame的子类,来实现你的代码
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
// 将窗口最大化
frame.setTitle("Christmas");
// 设置窗口标题
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 选择当用户关闭框架的时候进行的操作 ,在有些时候需要将窗口隐藏,不能直接退出需要用到这个方法
frame.setVisible(true);
// 将窗口可见化,这样以便用户在第一次看见窗口之前我们能够向其中添加内容
}
});
}
}
输出结果:得到一个基本的公用框架,以后的内容可以在其他类中书写,放入这个框架中。
(二)按钮事件
package Event;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
*
* @author QuinnNorris 按钮事件
*/
public class ButtonFrame extends JFrame {
private JPanel buttonPanel;
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 200;
public ButtonFrame() {
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// 设置默认宽度和高度
buttonPanel = new JPanel();
// 将类的实例域中的JPanel面板对象实例化
makeButton("yellow",Color.YELLOW);
makeButton("blue",Color.BLUE);
makeButton("red",Color.RED);
//调用makeButton方法来创建并添加按钮
add(buttonPanel);
// 我们将这个添加好按钮的面板添加到原框架中
}
/**
* 通过方法来创建按钮,并且完成关联监视器和添加入面板的操作
* @param name 创建按钮的标识
* @param backgroundColor 点击按钮后改变的颜色,匿名内部类只能访问final修饰的变量,所以要用final
*/
public void makeButton(String name,final Color backgroundColor){
JButton colorButton = new JButton(name);
//通过不同的标识名,我们创建按钮