Я искал Google и StackOverflow совсем немного, и все они показывают, что с помощью:Предотвращение Закрытие JDialog от кнопки Выход
d.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
предотвратит кнопку выхода из закрытия диалогового окна, как сейчас, это не так. .. Опубликовано ниже соответствующий фрагмент кода, который, как представляется, возникают проблемы:
if (gameArea.hitChest()) {
JDialog d = new JDialog((JFrame) gameArea.getTopLevelAncestor(), "Dialogue", true);
ChestLoot ch = new ChestLoot(player);
d.add(ch);
d.setSize(200, 100);
d.setVisible(true);
d.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
d.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.out.println("Don't Close!");
}
});
System.out.println("Should dispose here");
TileIcon ches = gameArea.getCurrChest();
gameArea.removeChest(ches);
}
переместите 'd.setDefaultCloseOperation (WindowConstants.DO_NOTHING_ON_CLOSE);' перед символом 'd.setVisible (true);'. Я рекомендую делать все в диалоговом окне, прежде чем устанавливать его видимым. – Justin
@Quincunx Это исправило это, черт побери! Спасибо. –
После вызова 'setVisible' будет показано диалоговое окно. Поскольку ваш диалог является модальным, этот метод вызывается с блоком до тех пор, пока диалог не будет закрыт; следовательно, все ваши вызовы после этой точки несколько бессмысленны ... –