如果在java中单击按钮,则不会附加文本区域

时间:2014-05-29 11:11:30

标签: java

我设计了一个带有JTextArea的GUI,其中有两个按钮。每当我单击一个按钮时,TextArea中的某些文本就不会附加,直到完成整个函数的执行。

当监听器调用startAnimation方法时,应该打印一个星形,然后调用sleep方法,然后再次在文本区域中附加另一个星形并再次来回睡眠。这里发生的是单击按钮后文本区域中没有文本出现。很快startAnimation方法就结束了。突然所有的星星出现在textArea中。任何帮助?

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;


@SuppressWarnings("serial")
public class Gui extends JFrame 
{
JTextArea console = null;
JButton start     = null;
JButton exit      = null;
Listener listen   = null;

public Gui() 
{
    // Initializing the Frame
    setSize(300,400);
    setLayout(new FlowLayout());

    // Initializing Components
    console = new JTextArea(20,20);
    start   = new JButton("Start");
    exit    = new JButton("Exit");
    listen  = new Listener(this);

    // Adding Components
    getContentPane().add(console);
    getContentPane().add(start);
    getContentPane().add(exit);

    // Adding Listeners
    exit.addActionListener(listen);
    start.addActionListener(listen);

    // Setting properties of frame
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    //pack();
}

public void sleep()
{
    for(long i = 0 ; i < 9999999 ; i++);
}

public void startAnimation()
{

    for(int i = 0 ; i < 19 ; i++)
    {   
        for(int j = 0 ; j < 40 ; j++)
        {
            console.append("*");
                            sleep();

        }
        console.append("\n");
    }

}

public static void main(String[] args) 
{
    @SuppressWarnings("unused")
    Gui myGUI = new Gui();
}

}

听众类

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Listener implements ActionListener 
{
Gui temp = null;

public Listener(Gui temp) 
{
    this.temp = temp;
}

public void actionPerformed(ActionEvent event) 
{
    if(event.getSource() == temp.exit)

        System.exit(0);

    else
    {
        temp.start.setEnabled(false);
        temp.startAnimation();

    }

}

}

0 个答案:

没有答案