使用FileChooser打开用户文件路径并按扩展名过滤

时间:2018-04-23 23:00:09

标签: java user-interface filechooser

我是Java中GUI编码的新手。我的程序需要接受用户通过JTextField输入的文件路径。然后,用户可以选择与特定文件扩展名过滤器相关的四个JCheckBox中的一个。当用户按下按钮时,文件将在指定的路径上打开。

问题1):我是否正确编码了我想要的每种过滤器类型?

问题2):如何使用JFileChooser从用户输入的位置直接打开文件?

我搜索了各种讨论使用一个文件扩展名过滤器的论坛,但是没有通过CheckBox选择同时讨论多个过滤器。我知道如何打开一个通用的FileChooser面板并选择文件。我确实需要一些帮助来确定这个程序的最佳布局,也许还有一个更详细的例子,说明使用与我的场景相关的JFileChooser。

public class FinderPanel extends JPanel{

private JButton fileButton;
private JTextField fileText;
private JCheckBox jpg,bmp,txt,doc;
private JFileChooser chooser;

public FinderPanel(){

    fileButton=new JButton("open file");
    fileButton.addActionListener(new ButtonListener());

    fileText=new JTextField(10); // file path is entered in textfield
    fileText.setToolTipText("Enter file path here.");

    jpg=new JCheckBox(".jpg");
    jpg.setForeground(Color.green);
    bmp=new JCheckBox(".bmp");
    bmp.setForeground(Color.green);
    txt=new JCheckBox(".txt");
    txt.setForeground(Color.green);
    doc=new JCheckBox(".doc");
    doc.setForeground(Color.green);

    CheckBoxListener check=new CheckBoxListener();
    jpg.addItemListener(check);
    bmp.addItemListener(check);
    txt.addItemListener(check);
    doc.addItemListener(check);

    add(fileText);
    add(fileButton);
    add(jpg);
    add(bmp);
    add(txt);
    add(doc);

    setBackground(Color.black);
    setPreferredSize(new Dimension(200,200)); 
}
private class ButtonListener implements ActionListener{
    public void actionPerformed(ActionEvent event){
        // search for a given file based on input path and selected filters

        // file is opened at path
    }
}
private class CheckBoxListener implements ItemListener{
    public void itemStateChanged(ItemEvent event){
        chooser=new JFileChooser();

        if(jpg.isSelected()){
            FileFilter jpg=new FileNameExtensionFilter("jpg","jpeg");
            chooser.addChoosableFileFilter(jpg);
        }
        if(bmp.isSelected()){
            FileFilter bmp=new FileNameExtensionFilter("bmp");
            chooser.addChoosableFileFilter(bmp);
        }
        if(txt.isSelected()){
            FileFilter txt=new FileNameExtensionFilter("txt","text");
            chooser.addChoosableFileFilter(txt);
        }
        if(doc.isSelected()){
            FileFilter doc=new FileNameExtensionFilter("doc");
            chooser.addChoosableFileFilter(doc);
        }
    }
}

0 个答案:

没有答案