2012-10-18 55 views
0

我知道還有另一種方法可以做到這一點,但我更喜歡看是否有人以這種方式做出答案。最初的方法是在調用ShowDialog()函數後獲取整數返回值;我想從Event(如下所示)內部抓取它。我已經在那裏拋出了一些代碼來檢查是否選中了一個文件,但是我需要檢查批准按鈕(OK按鈕)是否在它到達之前被選中。有誰知道如何使用下面的設置來檢查在FileChooser對話框中按下哪個按鈕?在Swing FileChooser事件中檢測批准按鈕

這裏是我的代碼:

private void FileChooser_OpenMouseClicked(java.awt.event.MouseEvent evt) { 
     if(!FileChooser_Open.getSelectedFile().equals(null)) 
     { 



     } 
    } 

原始的方法:

//In response to a button click: 
int returnVal = fc.showOpenDialog(aComponent); 

不同的是,原來的方法獲取當關閉對話框返回值,而在此方法中,我做不知道如何獲得該返回值(我相信該框已經關閉,但沒有什麼可以捕獲返回值)。我很抱歉,如果我似乎沒有很大的意義。

編輯:更多信息

因此,這是如何,我創造對話(菜單項,「打開」引發一個事件,它調用showOpenDialog()方法,正如你所看到的,它是。沒有捕獲返回值(隨我一起)。是否有可能得到返回值或設計一個方法來確定是否按下了OK按鈕在MouseClicked事件?我想我試圖專注於一個事件基於編程風格,其中的代碼根據事件引發的反應,並抓住檢查點擊OK菜單事件中的OK/approval按鈕看起來有點...從我的角度來看是混亂的。也許我太習慣C#/ WinForm解決這個問題的方法是什麼?

private void MenuItem_OpenActionPerformed(java.awt.event.ActionEvent evt) {            
     FileChooser_Open.showOpenDialog(this); 
    } 


private void FileChooser_OpenMouseClicked(java.awt.event.MouseEvent evt) {            
     if(!FileChooser_Open.getSelectedFile().equals(null)) 
     { 



     } 
    }   

回答

1

如果我理解這個問題,你可能能夠使用一個JFileChooser#approveSelection()方法:


import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
import javax.swing.*; 

public class ApproveSelectionDemo { 
    public JComponent makeUI() { 
    final JPanel p = new JPanel(); 
    final JFileChooser fileChooser = new JFileChooser() { 
     @Override public void approveSelection() { 
     if(!getSelectedFile().exists()) { 
      int returnVal = JOptionPane.showConfirmDialog(
        this, "message", "title", JOptionPane.YES_NO_OPTION); 
      if(returnVal!=JOptionPane.YES_OPTION) { 
      return; 
      } 
     } 
     super.approveSelection(); 
     } 
    }; 
    p.add(new JButton(new AbstractAction("Open") { 
     @Override public void actionPerformed(ActionEvent e) { 
     int retvalue = fileChooser.showOpenDialog(p); 
     if(retvalue==JFileChooser.APPROVE_OPTION) { 
      System.out.println(fileChooser.getSelectedFile()); 
     } 
     } 
    })); 
    return p; 
    } 
    public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     @Override public void run() { 
     createAndShowGUI(); 
     } 
    }); 
    } 
    public static void createAndShowGUI() { 
    JFrame f = new JFrame(); 
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    f.getContentPane().add(new ApproveSelectionDemo().makeUI()); 
    f.setSize(320, 240); 
    f.setLocationRelativeTo(null); 
    f.setVisible(true); 
    } 
}