[英]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.