所以我一直在尝试改进我的代码风格并在功能上写一点。我每天编写的软件不是作为我的工作(网页设计)的要求,而是为了加快我的责任并自动化它们并节省时间(这种方法已被证明是非常宝贵的,并且让我有点超级巨星)。
在我最近的一个项目中,我试图以下列方式使用JFileChooser:
List<String> lines;
do {
lines = new ArrayList<>();
try {
lines = jFC.showOpenDialog(new JFrame() {
{
// originally setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}) == JFileChooser.APPROVE_OPTION
? Files.readAllLines(jFC.getSelectedFile().toPath())
: null;
} catch (Exception e) {
e.printStackTrace();
System.err.println("Error selecting File.");
}
System.out.println("Here we go");
} while (lines == null || lines.isEmpty());
然而,我的原始实现和修改后的实现都没有实际工作,我使用print语句进行测试(重新实现的版本从未被调用过。)然后我尝试执行以下操作:
JFrame test = new JFrame();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lines = jFC.showOpenDialog(test) == JFileChooser.APPROVE_OPTION
? Files.readAllLines(jFC.getSelectedFile().toPath())
: null;
产生了相同的结果。我已经搜索了重复项,但找不到能够复制我的确切情况的内容。基本上,我希望我的程序在JFileChooser被取消的任何时候完全终止,但我不愿意改变我的三元语句,因为它不能解决我的预期行为,而是建议解决。我的直觉告诉我它是一个范围问题但是对于windowClosing不被称为我提出了几个问题。