我设计了一个带有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();
}
}
}