我有一个小应用程序,可在单击按钮时打开fileChooser,并在选择文件后处理其内容。因此,假设我们有以下伪代码:
File file = new File();
JFileChooser fileChooser = new JFileChooser();
[...]
actionPerformed() {
file = fileChooser.getSelectedFile();
doStuffWithFile(file);
}
在这一点上,代码似乎采用了一种过程样式,因为与文件相关的所有事情现在实际上都在该actionPerformed()方法内部进行了。我不确定是否可以。
这是可以的编码样式吗?直观地讲,我想结束actionPerformed()并拥有在别处调用我的文件的方法。但是我该怎么办呢?
一个想法是只在actionPerformed()中设置file的新值。然后我可以用吸气剂获得该值。但是,如何呢?接下来应该发生的事情。
我在stackoverflow上看到过一个propertyChangeListener,但是我不确定这是否也是正确的。
最佳答案
一种选择是多线程。它仍然会执行所有操作,但不会在事件线程中执行。例如:
actionPerformed(){
new Thread(){
public void run(){
file = fileChooser.getSelectedFile();
doStuffWithFile(file);
}
}.start()
}