下面是我用多线程编写计时器的代码,实现的功能是,每次我点击Add按钮,变量名为f的JFrame就会添加一个JTextField,里面的数目从50开始倒计。
问题是,我点Add时候,JTextField不会立刻添加到f中,要自己把f窗体最大化才能看到那个JTexField,重点是,我明明把f的窗口设置成足够大的,足够容纳几十个的JTexField,却也显示不了。。
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JFrame;
import javax.swing.JTextField;public class Duoxiancheng {
  JFrame f=new JFrame();
  Button Add=new Button("Add");
  Button close=new Button("close");
   
  public void init()
  {   Add.addActionListener(new xListener());
  f.setLayout(new FlowLayout());
  f.add(Add);
  f.add(close);
  f.setSize(500,500);
  f.setVisible(true);  
  }
  class xListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
new MyThread().start();
}
}
  class MyThread extends Thread
{   
    String sum="50";
    JTextField x=new JTextField();
    {f.add(x);
    }
    public MyThread() 
{
}
        public void run()
        {   int ix;
            ix=Integer.parseInt(sum);
            
         while(true){
     x.setText(sum);
     try{//close.enable(false);
     ix=Integer.parseInt(sum);
     ix=ix-1;
     sum=String.valueOf(ix);
     Thread.sleep(1000); //this.sleep(1000);
    
     }catch(InterruptedException e){
     e.printStackTrace();
     }
     }
        }
}
public static void main(String args[])
{
new Duoxiancheng().init();
}
}