2016-05-04 10 views
0

У меня есть выбор файла демы, как показано ниже, Предположу, я закодирован внутри browseButton.addActionListener()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(); 
} 

Когда я нажимаю кнопку просмотра в первый раз, он выглядит отлично, но во время 2-я файловые фильтры, добавленные с существующими фильтрами. Хо, чтобы этого избежать! Любая помощь пожалуйста. Заранее спасибо!!

+0

Итак, я предполагаю, что у вас есть поле экземпляра под названием 'chooser', поэтому каждый раз, когда вызывается' ActionListener', он снова и снова перенастраивает диалог. Вместо этого настройте его один раз и просто повторите его использование. – MadProgrammer

+0

Либо вы должны добавить фильтр только при создании или воссоздании выбора каждый раз, когда он должен быть показан. –

+0

да, вы оба правильно ... Спасибо, друзья – Saravanan

ответ

1

Итак, я предполагаю, что у вас есть поле экземпляра с именем chooser, поэтому каждый раз, когда вызывается ActionListener, он снова и снова перенастраивает диалоговое окно. Вместо этого, настроить его один раз и просто повторно использовать его

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(); 
     } 
    } 
} 

Это в основном пример отложенной загрузки, где JFileChooser не создается до тех пор, пока на самом деле используется, но он получает повторно использовать по мере необходимости, что делает это быстрее

 Смежные вопросы

  • Нет связанных вопросов^_^