[英]How do I add an ActioListener to a JFileChooser in MVC
目前,我的视图类中有一个JFileChooser
,我想触发存储在控制器类中的某些事件。 我将ActionListeners
添加到JButtons
,如下所示:
view.setUploadButtonListener(new UploadButtonListener());
其中view
是我的视图类,而UploadButtonListener
是我的控制器类的内部类。 对于JFileChooser
来说,同样的方法似乎不起作用(至少我无法弄清楚)。
如何将ActionListener
添加到我的JFileChooser
,当用户单击OK时将触发它。 我也可以在侦听器中将所选文件路径作为参数传递吗?
我建议:“ 如何使用文件选择器 ”
JFileCooser
showOpenDialog
方法会弹出一个“ Open File
文件”选择器对话框,并在弹出窗口中返回文件选择器的状态值:
JFileChooser.CANCEL_OPTION
JFileChooser.APPROVE_OPTION
JFileCHooser.ERROR_OPTION
因此,这是您的ActionListener
的代码,它将打开“ File Chooser
并根据需要做出反应:
public void actionPerformed(ActionEvent e) {
if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
String name = file.getName();
...
}
}
在此处阅读有关showOpenDialog
更多信息: showOpenDialog-doc
要在视图中包含视图逻辑,在控制器中包含控制器逻辑,我会采取类似的措施:
class UploadButtonListener implements ActionListener{
private View view;
public UploadButtonListener(View view){
this.view = view;
}
@Override
public void actionPerformed(ActionEvent arg0) {
String filename = view.getFileName();
if(!filename.isEmpty()){
... your logic
}
}
}
然后将以下方法添加到您的视图类中:
public String getFileName(){
JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
return fc.getSelectedFile().getName();
else
return "";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.