从actionPerformed()打破程序风格

时间:2012-11-21 00:56:35

标签: java multithreading awt actionlistener procedural

我有一个小应用程序在单击按钮时打开fileChooser,在选择文件后,使用它的内容。所以,让我们说我们有这个伪代码:

    File file = new File();
    JFileChooser fileChooser = new JFileChooser();

    [...]

    actionPerformed() {
      file = fileChooser.getSelectedFile();
      doStuffWithFile(file);
    }

此时,似乎代码采用了程序样式,因为 file 所发生的一切现在实际上仍然在actionPerformed() - 方法内部发生。我不确定这是否可以。

这是好的编码风格吗?直觉上,我想结束actionPerformed()并让方法处理从其他地方调用的文件。但是我该怎么做呢?

一个想法是在actionPerformed()中设置 file 的新值。然后我可以用吸气剂获得该值。但是如何呢?它应该是接下来发生的事情。

我在stackoverflow看到过propertyChangeListener,但我不确定这是否也是正确的。

1 个答案:

答案 0 :(得分:0)

一种选择是多线程。它仍然会做所有事情,但不会在事件线程中。例如:

actionPerformed(){
    new Thread(){
        public void run(){
            file = fileChooser.getSelectedFile();
            doStuffWithFile(file);
        }
     }.start()
}