Swing 多线程绘制问题
package test12;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Locale;
public class Test12 {
public static void main(String[] args)
{
JFrame f = new JFrame();
JButton btn = new JButton("OK");
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
JThread t =new JThread();
t.start();
try
{
t.join(); //一旦join则出现组件绘制卡死的问题
}
catch(Exception e){ }
}
});
f.add(btn);
f.setLocationRelativeTo(null);
f.pack();
f.setVisible(true);
}
}
class JThread extends Thread
{
public void run()
{
JOptionPane.showMessageDialog(null ,"输入的文字", "消息对话框"
,JOptionPane.INFORMATION_MESSAGE);
}
}
代码很简单,绘制组件的时候会卡死,求高人指点.
------解决方案--------------------
GUI程序中,负责整个GUI事件处理和界面响应的,只是一条单线程。
你如果让这条线程忙碌,那么就让整个GUI僵死。
你可以这么试试看:
t.join();
换成:
Thread.sleep(10*1000); // 睡10秒