日期:2014-05-20 浏览次数:20773 次
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吧,用完就消毁。