我是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);
}
}
}