请帮我看看下面代码 当初次运行时text中的数可变 而点确定后text中的数却不变
不会是作用域的问题吧? 如果是那应怎样改才能在点确定后text 中的数也是变化的呢?  谢谢!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Text extends JFrame implements ActionListener
{    JButton tb=new JButton("开始");
int a=0;
     JTextField text=new JTextField("",10);
JTextField text1=new JTextField("5",10);
Text()
{
super("text测试");
setSize(100,150);
setLocation(200,300);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(text);
getContentPane().add(tb);
getContentPane().add(text1);
tb.addActionListener(this);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
begin();
}
public void begin()
{
int i=0;
         a=Integer.parseInt(text1.getText().trim());
while(a>0)
{
a--;i=50;
while(i>0)
     {
i--;
System.out.print("  "+i);
text.setText(""+i);
try{
    Thread.sleep(50);
        }catch(Exception e)
{  }
    }
        }
}
public void actionPerformed(ActionEvent ee)
{
if(ee.getSource()==tb)
{begin();}

       }
  public static void main(String srgs[])
  {   new Text();
  }
}

解决方案 »

  1.   

    第二次是线程阻塞问题.你阻止了主线程,所以无法显示,为了使你这个有不大的改动,我用的这种方法修改:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class Text  extends JFrame implements ActionListener,Runnable {  //加了一个线程接口.
      JButton tb = new JButton("开始");
      int a = 0;
      JTextField text = new JTextField("", 10);
      JTextField text1 = new JTextField("5", 10);
      //Thread th=new Thread(this);
      Text() {
        super("text测试");
        setSize(100, 150);
        setLocation(200, 300);
        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(text);
        getContentPane().add(tb);
        getContentPane().add(text1);
        tb.addActionListener(this);
        pack();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        text.setEnabled(false);
        run();   //------------------>相当于执行一次你的begin方法.
      }  public void run() {    //------->begin改为run,是为了重载.
        int i = 0;
        a = Integer.parseInt(text1.getText().trim());
        while (a > 0) {
          a--;
          i = 50;
          while (i > 0) {
            i--;
            System.out.print("  " + i);
            text.setText(""+i);
            try {
              Thread.sleep(50);
            }
            catch (Exception e) {}
          }
        }
      }  public void actionPerformed(ActionEvent ee) {     new Thread(this).start();//--->主要就是这儿了,新建一个线程,这样才不会影响主线程
      }  public static void main(String srgs[]) {
        new Text();
      }
    }