日期:2014-05-20  浏览次数:20672 次

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秒