如何安全启动一个Frame

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

/**
 * @author Lei
 * @version create time:2009-9-17 上午10:00:26
 */
public class SwingThread extends JFrame implements ActionListener {
 private JLabel counter;
 private int tickCounter = 0;
 private static SwingThread st;
 
 public SwingThread() {
  super("swing thread");
  
  JButton freezer = new JButton("Increment");
     freezer.addActionListener(this);
    
     counter = new JLabel("0");
    
     add(freezer, BorderLayout.CENTER);
        add(counter,  BorderLayout.SOUTH);
       
        pack();
        this.setLocationRelativeTo(null);
       
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
 }
 
 @Override
 public void actionPerformed(ActionEvent e) {
  incrementLabel();
 }
 private void incrementLabel() {
  tickCounter ++;
  
  Runnable code = new Runnable() {

   @Override public void run() {
    counter.setText(String.valueOf(tickCounter));
   }
   
  };
  
  if(SwingUtilities.isEventDispatchThread()) {
   code.run();
  }
  else {
   SwingUtilities.invokeLater(code);
  }
 }

 public static void main(String[] args) {
  SwingUtilities.invokeLater(new Runnable() {

   @Override
   public void run() {
    st = new SwingThread();
    st.setVisible(true);
    new Thread(new Runnable() {

     @Override public void run() {
      while(true) {
       try {
        Thread.sleep(300);
       }
       catch (InterruptedException e) {
        e.printStackTrace();
       }
       st.incrementLabel();
       }
     }
     
    }).start();
   }
   
  });
 }
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值