2016-05-04 14 views
0

が、私は以下のようなファイル選択のデモを持って、私はbrowseButton.addActionListener()内のコード化されていると仮定し、私はそれが完璧に見えるが、2回目に参照ボタンを初めてクリックFileNameExtensionFilter追加ファイルフィルタを繰り返し

FileFilter docx = new FileNameExtensionFilter("MS Word file(.docx)", "docx"); 
FileFilter doc = new FileNameExtensionFilter("MS Word file(.doc)", "doc"); 
FileFilter pdf = new FileNameExtensionFilter("Pdf file(.pdf)", "pdf"); 
chooser.addChoosableFileFilter(docx); 
chooser.addChoosableFileFilter(doc); 
chooser.addChoosableFileFilter(pdf); 
chooser.setFileFilter(docx); 
chooser.setAcceptAllFileFilterUsed(false); 
int ret = this.chooseLeft.showOpenDialog(chooserFrame); 
if(ret == JFileChooser.APPROVE_OPTION){ 
try{ 
File leftFile = this.chooseLeft.getSelectedFile(); 
leftfileName = leftFile.getName().toLowerCase(); 
}catch(Exception e){ 
e.printStackTrace(); 
} 

既存のフィルタで追加されたファイルフィルタ。それを避けるためにホー!助けてください。前もって感謝します!!

+0

だから、 'chooser'というインスタンスフィールドがあると仮定して、' ActionListener'が呼び出されるたびにダイアログを何度も再設定します。代わりに、それを一度設定して、それを簡単に再利用してください – MadProgrammer

+0

表示する必要があるたびに、フィルタを作成時または作成時にのみ追加する必要があります –

+0

はい両方とも正しい...おかげで仲間 – Saravanan

答えて

1

chooserという名前のインスタンスフィールドがあるので、ActionListenerが呼び出されるたびにダイアログを繰り返し再設定すると仮定します。必要に応じて代わりになりますこれは、一度、シンプルなこれは基本的にそれが実際に使用されるまでJFileChooserが作成されていない遅延読み込みの例であること

private JFileChooser chooser; 
//... 
protected JFileChooser getFileChooser() { 
    if (chooser == null) { 
     chooser = new JFileChooser(...); 
     FileFilter docx = new FileNameExtensionFilter("MS Word file(.docx)", "docx"); 
     FileFilter doc = new FileNameExtensionFilter("MS Word file(.doc)", "doc"); 
     FileFilter pdf = new FileNameExtensionFilter("Pdf file(.pdf)", "pdf"); 
     chooser.addChoosableFileFilter(docx); 
     chooser.addChoosableFileFilter(doc); 
     chooser.addChoosableFileFilter(pdf); 
     chooser.setFileFilter(docx); 
     chooser.setAcceptAllFileFilterUsed(false); 
    } 
    return chooser; 
} 
//... 
public void actionPerformed(ActionEvent evt) { 
    JFileChooser chooser = getFileChooser(); 
    int ret = chooser.showOpenDialog(chooserFrame); 
    if(ret == JFileChooser.APPROVE_OPTION){ 
     try{ 
      File leftFile = chooser.getSelectedFile(); 
      leftfileName = leftFile.getName().toLowerCase(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 

を再使用して設定し、それが再使用されますそれは速く

関連する問題