我有一个最小的Java Swing应用程序来显示问题:当我打开一个JFileChooser并试图双击右边一列的文件时,它会试图移动到左列,无论我多快地双击它,它都不会被选中,直到它位于左列位置,这是Java Swing中的一个错误,还是我做错了什么?如何修复它?
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.filechooser.FileFilter;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class Demo_File_Chooser_Show_Txt_Only extends JFrame
{
private JButton buttonBrowse;
public Demo_File_Chooser_Show_Txt_Only()
{
super("Demo File Type Filter");
setLayout(new FlowLayout());
buttonBrowse=new JButton("Browse...");
buttonBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { showOpenFileDialog(); } });
getContentPane().add(buttonBrowse);
setSize(300,100);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args)
{
try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }
catch (Exception e) { }
SwingUtilities.invokeLater(new Runnable() { public void run() { new Demo_File_Chooser_Show_Txt_Only(); } });
}
private void showOpenFileDialog()
{
JFileChooser fileChooser=new JFileChooser(".");
fileChooser.setControlButtonsAreShown(false);
fileChooser.setFileFilter(new FileFilter()
{
@Override
public boolean accept(File file) { return file.getName().toLowerCase().endsWith(".txt"); }
@Override
public String getDescription() { return ".txt files"; }
});
// fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
// fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.showOpenDialog(null);
}
}
发布于 2019-05-26 00:14:23
我添加了以下行。
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
添加以上行后,您将能够双击。
为了检查,我还添加了要打印的以下行。
int someValue = fileChooser.showOpenDialog(null);
if (someValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
System.out.println("Selected File : " + selectedFile.getAbsolutePath());
}
https://stackoverflow.com/questions/56306508
复制相似问题