java-Swing-窗口设计-4
package com.etc.swingdemo3;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 简化写法(匿名内部类):由于在真正的程序里,这种小型的内部类数量很多,所有需要简化写法。
*/
public class MyFrame extends JFrame {
// 添加两个属性
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);
// // 创建一个匿名内部类
// ActionListener listener = new ActionListener(){
//
// @Override
// public void actionPerformed(ActionEvent e) {
//
// MyFrame.this.showTime();
// }
// };
//
// button.addActionListener(listener);
// 把监听器传给按钮
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
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.swingdemo3;
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();
}
});
}
}