最近在研究多线程和Swing的结合...本意:执行一个时间比较长的计算,跳出一个模糊进度框(new Thread)作为提示,等计算好了..终止这个进程然后...出现了问题....按了按钮之后,显示出了JDialog的外框,但是JDialog里面的内容却显示不出来......非常郁闷.....
所以....只能来请教能人了..................>>>>>>>>>>>>>>>>>
下面是源代码:test.javaimport java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class test {

JFrame jFrame = null;
JButton jButton = new JButton();
JDialog jDialog = null;

private class BarThread extends Thread{
JFrame jFrame = null;
public BarThread(JFrame jFrame) {
this.jFrame = jFrame;
}
public void run() {
SwingBean sb = new SwingBean();
jDialog = sb.get_OnrunProcess_JDialog(jFrame);
jDialog.setVisible(true);
}
}

public test() {
jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jButton.setText("Start");
jButton.setBounds(new Rectangle(415, 5, 80, 25));
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton_actionPerformed();
}
});

jFrame.add(jButton);
jFrame.setSize(100, 100);
jFrame.setLocation(300, 300);
jFrame.setVisible(true);
}

private void jButton_actionPerformed() {
System.out.println("Start");
Thread stepper = new BarThread(jFrame);
stepper.start();
for(int i=0;i<20000;i++) {
System.out.println(java.lang.Math.atan((double)i));
}
//jDialog.setVisible(false);
if(stepper.isAlive()) {
System.out.println("进程存在,Kill");
stepper.stop();
}
else System.out.println("进程已经不存在");
System.out.println("End");
} /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
new test();
}
}
SwingBean.javaimport javax.swing.*;
public class SwingBean{

public SwingBean() {
// TODO Auto-generated constructor stub
}
public JDialog get_OnrunProcess_JDialog(JFrame jFrame) {

Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();

JPanel jPanel = new JPanel();

JProgressBar jProgressBar = new JProgressBar(0, 100);
jProgressBar.setIndeterminate(true);
jProgressBar.setStringPainted(false);

JLabel jLebel = new JLabel();
jLebel.setText("正在处理中,请稍后...");

jPanel.setLayout(new BorderLayout());
jPanel.add("North", jProgressBar);
jPanel.add("South", jLebel);
jPanel.setSize(new Dimension(200,100));

JDialog jDialog = new JDialog(jFrame,true);
jDialog.setContentPane(jPanel);
jDialog.setResizable(false);
jDialog.setLocation((d.width-200)/2, (d.height-100)/2);
//jDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

jDialog.pack();

return jDialog;
}
}