java-Swing-窗口设计-3:
package com.etc.swingdemo2;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 监听器Listener 是Swing里界面事件处理的一种方式。
* <p>
* 1.创建监听器对象 listener
* 2.将监听器对象交给按钮
* 3.当按钮被点击的时候,Swing框架会调用监听器对象里面的方法,进行处理。
* <p>
* 内部类调用外部类的方法: 外部类方法名 .this. 方法名
* <p>
* 程序目的:点击获取当前时间
*/
public class MyFrame extends JFrame {
// 添加两个属性 :TimeLabel控件 和 button 控件
JLabel timeLabel = new JLabel("00:00:00");
JButton button = new JButton("显示时间");
public MyFrame(String title) {
super(title);
// 得到根容器 (ContentPane)
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(button);
contentPane.add(timeLabel);
// 创建一个监听器的对象
MyButtonListener listener = new MyButtonListener();
// 把监听器传给按钮
button.addActionListener(listener);
}
// 创建一个监听器的类,实现ActionListener 接口,并且重写接口方法。
private class MyButtonListener implements ActionListener {
// 此方法系统默认自己调用:就是在按钮触发的时候,系统自己调这个方法。
@Override
public void actionPerformed(ActionEvent e) {
// 默认测试调用方法体
System.out.println("按钮被点。。。。。。。。。。。");
// 内部类调用外部类的方法: (外部类名 .this .方法名)
MyFrame.this.showTime();
}
}
// 获取当前的时间,格式为:"HH:mm:ss"; 之后传给文本控件,再由文本控件放入容器中。
public void showTime() {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String timeStr = sdf.format(new Date());
timeLabel.setText(timeStr);
}
}
package com.etc.swingdemo2;
import com.etc.swingdemo1.MyFrame;
import javax.swing.*;
public class SwingDemo {
private static void createGUI() {
// JFrame指一个窗口,构造方法的参数为窗口标题
MyFrame frame = new MyFrame("Swing Demo");
// 当关闭窗口时,退出整个程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口的其他参数,如窗口大小
frame.setSize(400, 300);
// 显示窗口
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createGUI();
}
});
}
}