У меня есть 3 диалога, которые отображаются вместе в моем проекте.Проблема с диалоговой способностью в Swing в java 1.6
- Первый диалог является немодальным с
setVisibleOnTop(false)
. - Второй диалог немодальный с
setVisibleOnTop(true)
. - Третий диалог - Модификация приложения с
setVisibleOnTop(true)
.
Теперь вопрос:
- В идеале, когда есть диалог «третий» открыт с
APPLICATION_MODAL
собственности, то никакой другойJComponent
не должен принимать щелчок. Это отлично работает с java 1.7. - С помощью java 1.6 я нажимаю на диалог «один», затем диалог «второй» идет в конце диалога «один». В то время как диалог «третий» все еще открыт.
Теперь вопрос:
- Почему диалог «один» выходит вперед, когда есть диалог
APPLICATION_MODAL
(третий) был открыт? - Почему второй диалог с недвижимостью
setAlwaysOnTop(true)
идет сзади? - Я считаю, что это проблема с java 1.6. Кто-нибудь знает об этом?
- Является ли эта ошибка документирована где-то?
Пример кода:
import java.awt.Frame;
import javax.swing.JDialog;
class MyDialog1 extends JDialog {
MyDialog1()
{
super();
super.setVisible(false);
setTitle("one");
}
}
class MyDialog2 extends JDialog {
MyDialog2()
{
super(null,ModalityType.MODELESS);
setAlwaysOnTop(true);
setTitle("second");
}
}
class MyDialog3 extends JDialog {
MyDialog3()
{
super(new Frame(),ModalityType.APPLICATION_MODAL);
setTitle("third");
setAlwaysOnTop(true);
super.setVisible(false);
}
}
public class ModalityIssue {
public static void main(String args[])
{
MyDialog1 d1=new MyDialog1();
d1.setSize(600, 600);
MyDialog2 d2=new MyDialog2();
d2.setSize(500, 500);
MyDialog3 d3=new MyDialog3();
d3.setSize(400, 400);
d1.setVisible(true);
d2.setLocationRelativeTo(d1);
d2.setVisible(true);
d3.setLocationRelativeTo(d2);
d3.setVisible(true);
}
}
потому что есть awt.Frame – mKorbel