是的,对于java或C#,C++等都是,按钮处理方法与界面线程在同一现成,就是说程序在执行按钮处理方法时,界面就会无响应,所以如果按钮处理的程序需要长时间运行,就要将处理方法写在线程里执行,简单来说,用匿名内部类就可以
目前成都创新互联已为千余家的企业提供了网站建设、域名、虚拟空间、成都网站托管、企业网站设计、阜宁网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
new Thread() {
public void run() {
//TODO: 将需要长时间处理的代码写在这里
//eg:
ThisClass.this.doSomething(); //ThisClass是当前类名
}
}.start();
2021-04-10 01
利用死循环和线程,让线程在循环中每sleep1秒,重新获取下系统时间就是动态显示时间了。
while(true){
Date date=new Date(System.currentTimeMillis());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(date);
//每一秒刷新下时间
try {
Thread.sleep(1000);//sleep是以ms为单位
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
可以使用JLabel的setText(text);例如:label.setText(text);
下面是一个具体的实例,当单击change按钮时改变文字内容。
public class WinTest implements ActionListener
{
JLabel label = new JLabel("注意我会变哦!");
public WinTest()
{
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
JButton button = new JButton("change");
button.addActionListener(this);
frame.add(button);
Font font = new Font("黑体",Font.PLAIN,40);
label.setFont(font);
frame.add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
public static void main(String[] args)
{
new WinTest();
}
@Override
public void actionPerformed(ActionEvent e)
{
if("change".equals(e.getActionCommand()))
{
label.setText("啊哈哈!我会72变,啊哈哈哈哈哈哈!");
}
}
}