java用Swing实现简单的点击按钮,效果显示当前时间
废话不多说,代码走起:
备注为了方便,个人新建了一个myFrame类。
//
//swing实现简单的窗口点击事件,点击效果为显示当前时间
//Create by Lee_1310 on2019.3.21 16:57
//Reprint indicating source:https://blog.****.net/Lee_1310
//
package SwingDemo;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class SwingDemo {
private static void createGUI()
{
//初始化窗口程序
myFrame frame = new myFrame("Lee");//窗口命名
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setBackground(Color.red);//暂时没用
frame.setSize(500,350);
frame.setVisible(true);
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run()
{
createGUI();
}
});
}
}
以下是个人的myFrame
package SwingDemo;
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{
JButton button = new JButton("显示时间");
JLabel timeLabel= new JLabel("00:00:00");
public myFrame(String title)
{
super(title);
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
//创建一个JLaber和一个JButton
contentPane.add(button);
contentPane.add(timeLabel);
//创建监听器对象
/*
* MyButtonListener listener = new MyButtonListener();
* private class MyButtonListener implements ActionListener ()
* {
@Override
public void actionPerformed(ActionEvent arg0)
{
myFrame.this.showTime();
}
}
*/
//把监听器注册给按钮
//匿名类
// button.addActionListener(new ActionListener() {//接口不能直接实例化所以直接在后面加大括号调用方法
//
// @Override
// public void actionPerformed(ActionEvent arg0)
// {
// myFrame.this.showTime();
// }
// });
button.addActionListener((e)->{//lambda表达式
showTime();//也可以使用myFrame.this.showTime();//调用外部类的方法
});
}
public void showTime()
{
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String strtime = sdf.format(new Date());
timeLabel.setText(strtime);
}
}
运行结果如图:
每次点击会或得当前时间
其中
button.addActionListener(new ActionListener() {//接口不能直接实例化所以直接在后面加大括号调用方法
@Override
public void actionPerformed(ActionEvent arg0)
{
myFrame.this.showTime();
}
});
这一段代码可以用lambda表达式简化为:
button.addActionListener((e)->{//lambda表达式
showTime();//也可以使用myFrame.this.showTime();//调用外部类的方法
});
lambda表达式可以参照:https://www.cnblogs.com/tiantianbyconan/p/3613506.html