在JFileChooser&&amp ;;中没有调用windowClosing System.exit运行不正常?

时间:2017-12-22 18:41:25

标签: java swing jframe jfilechooser system.exit

背景

所以我一直在尝试改进我的代码风格并在功能上写一点。我每天编写的软件不是作为我的工作(网页设计)的要求,而是为了加快我的责任并自动化它们并节省时间(这种方法已被证明是非常宝贵的,并且让我有点超级巨星)。

问题

在我最近的一个项目中,我试图以下列方式使用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不被称为我提出了几个问题。

TL;博士

JFrame上的System.exit(0)对于JFileChooser不起作用,不会改变流量控制,所以不要问。

0 个答案:

没有答案