日期:2014-05-20 浏览次数:20918 次
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DialogTest extends JFrame implements ActionListener {
private JDialog d1;
private JDialog d2;
public DialogTest() {
init();
}
private void init() {
this.getContentPane().add(initPanel());
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 400);
}
private Component initPanel() {
JPanel panel = new JPanel();
JButton b = new JButton("Dialog1");
b.addActionListener(this);
panel.add(b);
return panel;
}
public static void main(String[] args) {
new DialogTest();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Dialog1")) {
JButton b = new JButton("Dialog2");
b.addActionListener(this);
d1 = new JDialog(this, "Im dialog one!", true);
d1.add(b);
d1.setSize(200, 100);
d1.setVisible(true);
} else if(e.getActionCommand().equals("Dialog2")) {
d2 = new JDialog(d1, "Im dialog two!", true);
d2.setSize(200, 50);
d2.setVisible(true);
}
}
}
------解决方案--------------------
我的平台:window server2003 x86 JDK版本:java version "1.6.0_17"
没发现你说的情况咧。
打开模式对话框后,只能通过win + d 键隐藏窗体。任务栏上点击swing窗口图标后可以正常显示回原来的状态。
------解决方案--------------------
我觉得 我上面随手写的那个例子不存在这个问题
我读了你的代码,发现那两个dialog是与其它组件同级生成的,之后只是调用setVisible做显示。dialog始终是同一份拷贝。我认为从业务上来说,应该每次都生成新的dialog吧,用完就消毁。