我有模态对话框和未修饰一个奇怪的问题JFrame
。
如果我创建一个主未修饰JFrame
然后我显示一个模式对话框感谢JOptionPane
,一切顺利。 模态对话框总是停留在顶端,我不能点击主名气。
但是,如果创建另一个JFrame
(或其他JDialog
),模态对话框仍然阻止我与主框架进行交互,但现在的模态对话框并不总是在上面,走的时候我点击它的主框架下面。
此问题不发生:
编辑
我用jdk1.7.0.0_09
上Linux Sus
e.But我有相同的结果jre 1.6.0_32
该代码我用来测试:
public static void main(String[] args) {
// creates main frame and set visible to true
final JFrame mainFrame = new JFrame();
mainFrame.setUndecorated(true); // if I comment this line, everything goes well
mainFrame.add((new JPanel()).add(new JButton("OK")));
mainFrame.setSize(new Dimension(500, 500));
mainFrame.setVisible(true);
// creates a dialog and set visible to true
JFrame anotherFrame = new JFrame();
anotherFrame.setVisible(true); // or if I comment this line, everything goes well too
// display a modal dialog
JOptionPane.showMessageDialog(mainFrame, "A message");
}
但是,如果创建另一个的JFrame(或其他的JDialog),模态对话框仍然阻止我与主框架进行交互,但现在的模态对话框并不总是在上面,走的时候我点击它的主框架下面。
根本不符合事实,都是没有入店,直到JOptioPane可见
的JOptionPane或JDialod.setModal(真)块鼠标或键事件到alll窗口从currnet JVM调用
必须有别的东西,是不是清楚你的问题,代码的其余部分,未成年人可能是Java版本和Native OS
为的Java6(操作系统)的代码,对我的作品上的Win7 / java7目录(x.x_011)
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Main {
private JFrame mainFrame = new JFrame();
private JFrame anotherFrame = new JFrame();
public Main() {
mainFrame.setUndecorated(true);
mainFrame.add((new JPanel()).add(new JButton("OK")));
mainFrame.setSize(new Dimension(100, 60));
mainFrame.setVisible(true);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
anotherFrame.setVisible(true);
anotherFrame.setLocation(110, 0);
anotherFrame.setSize(new Dimension(100, 60));
anotherFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane.showMessageDialog(mainFrame, "A message");
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Main main = new Main();
}
});
}
}
文章来源: Modal dialog not always on top of an undecorated JFrame when another JFrame is visible