//主类test.java 创建窗口并设置大小
import javax.swing.JFrame;
public class test{
private static void createGUI()
{
MyFrame frame = new MyFrame("Swing Demo");//调用自定义的类 创建一个叫Swing Demo的窗口
//上述也可以写成 JFrame frame = new MyFrame("Swing Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run()
{
createGUI();
}
});
}
}
//自定义的MyFrame类 设计窗口内容 以及按钮的事件处理程序
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MyFrame extends JFrame
{
private static final long serialVersionUID = 1L;
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();
// 把监听器注册给按钮 按钮被点击时调用按钮对应的actionPerformed()方法
button.addActionListener( listener );//参数为ActionListener类型 或者其子类
}
public void showTime()
{
Date now=new Date();//获取时间
//自定义时间输出格式
SimpleDateFormat time=new SimpleDateFormat("yyyy年MM月dd日hh时mm分ss秒");
timeLabel.setText(time.format(now));//将时间写入到时间对应的标签中
}
// 定义了一个叫MyButtonListener的内部类 ActionListener 是一个 interface
private class MyButtonListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
// 当按钮被点击时,Swing框架会调用监听器的 actionPerformed()方法
System.out.println("按钮被点击...");
MyFrame.this.showTime();//内部类中调用外部类的方法 也可以showTime()直接调用
// 当调用的方法在内部类和外部类中都有 外部类名.this.方法名
//只在外部类中有 则直接用方法名调用
}
}
}
点击按钮后的界面