我在记事本上构建了保存对话框,这是一个问题,因为我有另一个类保存文件的方法,当我在public static void main(String [] args)中使用时,它什么都不做`
public static void main(String[] args) throws IOException {
JFrame frame = new JFrame("edytor_tekstu");
frame.setContentPane(new edytor_tekstowy2().panel);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
edytor_tekstowy2 edytor = new edytor_tekstowy2();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
if (czy_zapisany == false) {
Object[] options = {"YES",
"NO", "YES, BUT SAVE"};
int n = JOptionPane.showOptionDialog(frame,
"Exit, but file is not save ???",
"YOU DONT SAVE SAVED FILE",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
options[0]);
if (czy_zapisany == false) {
if ("NO".equals(n)) {
} else if (("YES".equals(n))) {
edytor.saveas();
} else if (("YES, BUT SAVE".equals(n))) {
edytor.saveas();
}
} else {
System.exit(0);
}
}
}
});
frame.pack();
frame.setVisible(true);
}`
答案 0 :(得分:0)
您正在调用saveas()
的{{1}}未添加到框架中。
因为在这里:
frame.setContentPane(new edytor_tekstowy2().panel);
您正在创建edytor_tekstowy2
的新实例,但您不会对其进行引用。
您实际创建了一个新对象:
edytor_tekstowy2 edytor = new edytor_tekstowy2();
您在windowClosing
方法中保留对其的引用和使用。
您需要更改
frame.setContentPane(new edytor_tekstowy2().panel);
到
frame.setContentPane(edytor.panel);
此外,n
是int
。您将n
与String
("NO".equals(n)
,"YES".equals(n)
等)进行比较的所有条件都是false
因此。
您需要使用"NO".equals(options[n])
或n == 0
之类的内容。