我使用以下代码禁用新的"文件夹"按钮:
public void disableNewFolderButton( Container c ) {
System.out.print("in disable fn");
int len = c.getComponentCount();
for (int i = 0; i < len; i++) {
Component comp = c.getComponent(i);
if (comp instanceof JButton) {
JButton b = (JButton)comp;
Icon icon = b.getIcon();
if (icon != null
&& icon == UIManager.getIcon("FileChooser.newFolderIcon"))
{
System.out.print("in disable fn");
b.setEnabled(false);
}
}
else if (comp instanceof Container) {
disableNewFolderButton((Container)comp);
}
}
}
Run Code Online (Sandbox Code Playgroud)
代码在以下行中调用:
JFileChooser of=new JFileChooser();
of.setAcceptAllFileFilterUsed(false);
of.addChoosableFileFilter(new MyFilter());
disableNewFolderButton(of);
Run Code Online (Sandbox Code Playgroud)
但是,仅在首次显示文件选择器时才会禁用新文件夹按钮.假设我去了一些驱动器,比如说g :,那么按钮再次启用.如何设置这个权利?
我想只选择带有FileChooser的.csv文件,但是当选择器打开时,我会看到所有扩展名.我需要更多地设置更多吗?
btnFile.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle("Choose Value File");
chooser.addChoosableFileFilter(new CSVFilter());
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
System.out.println("getCurrentDirectory(): "
+ chooser.getCurrentDirectory());
System.out.println("getSelectedFile() : "
+ chooser.getSelectedFile());
}
else {
System.out.println("No Selection ");
}
}
});
Run Code Online (Sandbox Code Playgroud)
和Filter是嵌套类
class CSVFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File f) {
return f.isFile() || f.getName().toLowerCase().endsWith(".csv");
}
public String getDescription() {
return "*.csv";
}
}
Run Code Online (Sandbox Code Playgroud) 下面的代码应该从JFileChooser获取默认目录图标,然后在我自定义的"Recent Directories"列表中使用该图标,该列表作为JFileChooser对话框的附件提供.有人可以解释为什么下面的代码不起作用(特别是为什么在DefaultListRenderer上的setIcon没有做到这一点),并告诉我如何将图标放在JList中的每个项目旁边?我宁愿避免实现我自己的ListCellRenderer,除非这是使其工作的唯一方法.
import java.awt.*;
import java.io.File;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Chooser extends JPanel {
private static final String[] BUTTON_TEXTS = { "Hello", "Goodbye",
"Hello Goodbye", "Adios", "This is a long String for WTF", "Hello",
"Goodbye", "Hello Goodbye", "Adios", "This string WTF" };
public Chooser(Icon icon) {
this.setLayout(new BorderLayout());
JPanel labelPanel = new JPanel(new BorderLayout());
JLabel label = new JLabel("Recent Directories:");
labelPanel.add(label, BorderLayout.LINE_START);
labelPanel.setBackground(Color.LIGHT_GRAY);
labelPanel.setBorder(new EmptyBorder(5, 10, 5, 0));
DefaultListModel model = new DefaultListModel();
JList …Run Code Online (Sandbox Code Playgroud) 我有一个方法,将txt文件作为输入.我曾经通过键入文件的直接路径来使用字符串.但每当我尝试使用不同的文件进行输入时,它就会变得很麻烦.我尝试实施,JFileChooser但没有运气.
这是代码,但没有发生任何事情.
public static JFileChooser choose;
File directory = new File("B:\\");
choose = new JFileChooser(directory);
choose.setVisible(true);
File openFile = choose.getSelectedFile();
FileReader fR = new FileReader(openFile);
BufferedReader br = new BufferedReader(fR);
Run Code Online (Sandbox Code Playgroud) 我正在编写一个小应用程序,它读取csv文件并将内容显示到JList中.
我目前的问题是new FileReader(file)代码一直给我一个java.io.FileNotFoundException错误,我不太清楚为什么.
loadFile.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent actionEvent)
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(new File("~/"));
if (fileChooser.showOpenDialog(instance) == JFileChooser.APPROVE_OPTION)
{
File file = fileChooser.getSelectedFile();
CSVReader reader = new CSVReader(new FileReader(file.getAbsolutePath()));
fileLocation.setText(file.getAbsolutePath());
}
}
});
Run Code Online (Sandbox Code Playgroud) 如何检查我JFilechooser是否选择了一个文件或多个文件?
我有一个按钮,打开一个保存对话框窗口,其中设置了默认扩展过滤器.当我保存文件时,它会在正确的文件夹中创建它,但它不会在末尾添加扩展名.如何根据过滤器将扩展名添加到文件末尾?这是我的保存文件按钮代码:
btnNewButton = new JButton("Export File");
btnNewButton.addActionListener (new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
final JFileChooser finder = new JFileChooser();
finder.setFileFilter(new FileNameExtensionFilter("Board Files", "boa"));
int returnVal = finder.showSaveDialog(null);
if (returnVal == javax.swing.JFileChooser.APPROVE_OPTION) {
java.io.File file = finder.getSelectedFile();
String file_name = file.toString();
JOptionPane.showMessageDialog(null, file_name);
WriteFile data = new WriteFile(file_name);
try {
data.writeToFile("Testing 1");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
});
Run Code Online (Sandbox Code Playgroud) 我创建了简单的gui应用程序,JFilechooser用于打开pdf文件.gui有一个浏览按钮和一个textArea来可视化文件的内容.
我创建了两个类:Gui(包含main())和GuiJFrame来实现gui,处理程序和监听器.我设法获得了窗口应用程序,但浏览按钮似乎不起作用.我不知道我哪里弄错了,请帮帮我
import java.awt.EventQueue;
public class Gui {
/** Launch the application. */
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Gui window = new Gui();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/** Create the application. */
public Gui() {
initialize();
}
/** Initialize the contents of the frame. */
private void initialize() {
GuiJFrame guiJFrame = new GuiJFrame();
guiJFrame.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序来从中选择文件JFileChooser.如何获取文件类型(例如,该文件是" .dxt "或" .dtml "的" .dat "等.)
我有以下代码.我应该怎么添加额外的线?
JFileChooser choice = new JFileChooser();
int option = choice.showOpenDialog(this);
if (option == JFileChooser.APPROVE_OPTION)
{
String path=choice.getSelectedFile().getAbsolutePath();
String filename=choice.getSelectedFile().getName();
System.out.println(path);
listModel.addElement(path);
System.out.println(filename);
}
Run Code Online (Sandbox Code Playgroud) 我对这种比较感到非常困惑FilenameUtils.getExtension.
我有一个文件选择器fc,我想确保扩展名是.csv.
JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION &&
fc.getSelectedFile().isFile() &&
FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv") {
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
经过一些调试后,我发现最后一个语句负责没有执行if语句.
FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv"
Run Code Online (Sandbox Code Playgroud)
但是我做了很多,System.out.println()并得到了
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()));
Run Code Online (Sandbox Code Playgroud)
打印csv.但是当我输入时仍然返回false:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv");
Run Code Online (Sandbox Code Playgroud)