标签: jfilechooser

JFileChooser的Windows外观

我正在尝试生成JFileChooser具有Windows外观的内容.我找不到一个方法来改变它,所以我创建了一个扩展的基类,JFileChooser用以下代码更改UI:

public FileChooser(){
  this(null);
}
public FileChooser(String path){
   super(path);
   try {
      UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

    } catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Run Code Online (Sandbox Code Playgroud)

然后,在另一节课中,我打电话

FileChooser chooser = new FileChooser(fileName);
int val = chooser.showOpenDialog(null);
Run Code Online (Sandbox Code Playgroud)

但是出现的对话框具有Java外观.有关如何改变这一点的任何想法?是否有一个JFileChooser类的方法,我可以使用它而不是这个扩展类?

谢谢!

java jfilechooser look-and-feel

9
推荐指数
2
解决办法
3万
查看次数

JFileChooser - 多个文件过滤器?

我对Swing中的JFileChooser有疑问.我正在尝试在下拉框中获取多个文件扩展名,但不知道如何操作.

有方法

extFilter = FileNameExtensionFilter(description, extensions);
Run Code Online (Sandbox Code Playgroud)

然后我可以通过写作来使用

fileChooser.setFileFilter(extFilter);
Run Code Online (Sandbox Code Playgroud)

但是,正如您所看到的,这仅支持下拉列表中的一个选项.如何添加更多?

java jfilechooser file save

9
推荐指数
1
解决办法
2万
查看次数

如何使用JFileChooser获取目录路径?

我有一个带有文本字段的小型Java GUI应用程序.当用户单击文本字段时,将触发事件并启动JFileChooser.它仅限于目录.

我要做的是获取所选目录的完整路径并将其放在文本字段中.

我不知道怎么做,我搜索了大量的java教程和文档,我找不到答案.有人能帮我吗?

澄清:我希望将完整路径作为字符串并将其放在文本字段中,覆盖之前的任何内容.

java user-interface swing jfilechooser

9
推荐指数
2
解决办法
5万
查看次数

JFileChooser getCurrentDirectory返回错误的当前目录?

我在应用程序中使用JFileChooser来浏览目录,但是当我选择目录时,它返回我选择的文件夹上方文件夹的路径.即我选择"C:\ Test"并返回"C:\"

这是我正在使用的代码

            JFileChooser c = new JFileChooser();
            c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            int rVal = c.showSaveDialog(c);
            if (rVal == JFileChooser.APPROVE_OPTION) {
                txtDirectory.setText("");
                CC_Test.MsgBox(c.getCurrentDirectory().toString());
                txtDirectory.setText(c.getCurrentDirectory().toString());
            }
            if (rVal == JFileChooser.CANCEL_OPTION) {
                txtDirectory.setText("");
            }
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser

9
推荐指数
1
解决办法
5850
查看次数

浏览图像文件并使用Java Swing显示它

我的问题是,点击Browse按钮后会显示要选择的目录中的所有文件,然后所选图像会正确显示在GUI中.但是当我第二次单击"浏览"按钮时,它仅显示旧图像而不是显示新图像.请帮帮我.

作为参考,我上传了UI.

package GUI;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Graphics2D;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;


@SuppressWarnings("serial")
public class MainAppFrame extends JFrame {

    private JPanel contentPane;
    File targetFile;
    BufferedImage targetImg;
    public JPanel panel,panel_1;
    private static final int baseSize = 128;
    private static final String basePath =![enter image description …
Run Code Online (Sandbox Code Playgroud)

java eclipse swing jfilechooser image

9
推荐指数
2
解决办法
4万
查看次数

在JFileChooser中添加.txt扩展名

我有一个方法从JTextArea获取文本,创建一个文件并在其上写文本如下代码:

public void createTxt() {

    TxtFilter txt = new TxtFilter();

    JFileChooser fSave = new JFileChooser();

    fSave.setFileFilter(txt);
    int result = fSave.showSaveDialog(this);
    if(result == JFileChooser.APPROVE_OPTION) {
        File sFile = fSave.getSelectedFile();
        FileFilter selectedFilter = fSave.getFileFilter();

        String file_name = sFile.getName();
        String file_path = sFile.getParent();

        try{
            if(!sFile.exists()) {
                sFile.createNewFile();
                BufferedWriter out = new BufferedWriter(new FileWriter(sFile));
                out.write(jTextArea1.getText());
                out.close();
                JOptionPane.showMessageDialog(null, "Warning file • " + file_name + " • created succesfully in \n" + file_path);    
            } else {
                String message = "File • " + file_name + …
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser

8
推荐指数
2
解决办法
3万
查看次数

如何使JFileChooser默认为计算机视图而不是我的文档

在JFileChooser的Windows外观中,JFileChooser对话框的左侧显示五个按钮:Recent Items,Desktop,My Documents,Computer和Network.这些都表示文件系统的视图,因为Windows资源管理器会显示它们.看起来除非调用setSelectedFile()或setCurrentDirectory()方法,否则JFileChooser默认为My Documents视图.

我试图让用户轻松选择多个映射网络驱动器中的一个,这应该出现在"计算机"视图中.有没有办法将JFileChooser设置为默认打开"计算机"视图?

我尝试了几种方法来强制它,最近的方法是找到根目录并将其设置为currentDirectory,但这显示了该根节点的内容.最新的代码包含在下面.

private File originalServerRoot;
private class SelectOriginalUnitServerDriveListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            JFileChooser origDriveChooser = new JFileChooser();
            origDriveChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            File startFile = new File(System.getProperty("user.dir")); //Get the current directory

            // Find System Root
            while (!FileSystemView.getFileSystemView().isFileSystemRoot(startFile))
            {
                startFile = startFile.getParentFile();
            }

            origDriveChooser.setCurrentDirectory(startFile);
            origDriveChooser.setDialogTitle("Select the Mapped Network Drive");
            int origDriveChooserRetVal = origDriveChooser.showDialog(contentPane,"Open");
            if (origDriveChooserRetVal == JFileChooser.APPROVE_OPTION)
            {
                originalUnitServerRoot = origDriveChooser.getSelectedFile();

            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

是否有一种方法允许我默认选择"计算机"视图(或网络,或任何其他视图),或任何方式欺骗JFileChooser?

编辑
感谢您快速彻底的答案.我结合了Hovercraft Full Of Eels和Guillaume Polet的答案,尝试使代码适用于任何驱动器号.结果代码如下.再一次,谢谢.

private File originalServerRoot;
private class …
Run Code Online (Sandbox Code Playgroud)

java windows swing jfilechooser jdialog

8
推荐指数
1
解决办法
9276
查看次数

如何删除JFileChooser上的Ctrl + C操作?

JFileChooser在我自己的框架中嵌入了一个框架中的其他自定义组件.这是我的应用程序的设计,因为它可能有助于可视化我的问题:

我是如何使用JFileChooser的

如果你不能说,JFrame标题下面的列表是JFileChoosers.这应该是有效的方法是您为目标分配快捷方式,然后当您按下这些快捷键时,所选文件将移动到目标.

我这样做的策略是将快捷方式分配给一个javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW范围InputMap的整个框架.

但令人讨厌的是,某些东西(我假设JFileChooser)继续响应/吸收我不想要的按键.例如,如果我按下Ctrl+C我的快捷键操作则不会运行.我尝试了本机外观(我使用的是Windows 7)和默认的L&F,两种情况都有同样的问题.我认为它可能正在尝试对所选文件进行复制操作,JFileChooser因为如果我点击其中一个按钮强制它失去焦点,突然我的Ctrl+C命令就完成了我的操作.

但是,我不确定这JFileChooser是怎么回事.当我调用getKeyListeners()它时,它返回一个空数组.我也尝试在所有三个范围内清除这个组合键的输入映射,它似乎仍然吸收了按键.

任何人都可以给我一些使JFileChooser忽略的示例代码Ctrl+C吗?此外,如果有人能告诉我将来如何调试这样的问题,那将会很有帮助.


这是我到目前为止尝试过的一些代码.您也可以使用它来尝试自己测试,因为此代码编译并运行,原样:

package com.sandbox;

import javax.swing.*;
import java.awt.event.ActionEvent;

public class Sandbox {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("control C"), "println");
        panel.getActionMap().put("println", new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("The JPanel action was performed!");
            } …
Run Code Online (Sandbox Code Playgroud)

java swing key-events jfilechooser key-bindings

8
推荐指数
1
解决办法
1573
查看次数

JfileChooser忽略OS X上的特殊字符文件夹

我有一个Java程序浏览本地文件系统的路径,为此我们使用了JFileChooser.如果文件夹名称是简单的英语在Windows,Mac OS X和Linux上正常工作.但是,如果我创建名为特殊字符的文件夹,例如 - ábcEóz,那么它仅在Windows和Linux上显示特殊字符名称,但在OS XI上无法看到那些特殊字符文件夹.它从文件夹列表中忽略它们.

我的程序基于java 7更新21. Mac OS X版本 - 10.8.2

我该如何解决这个问题?

谢谢

更新:我们正在使用JavaFX打包为Mac创建一个应用程序.当我们直接运行app.jar时,它会显示包含特殊字符的路径.但是如果我们尝试使用app启动应用程序,那么它会跳过那些特殊的char文件夹.

java macos jfilechooser javafx

8
推荐指数
1
解决办法
446
查看次数

使用JFileChooser过滤文件类型

我正在使用JFileChooser来选择文件,我试图限制显示只显示jpg或jpeg文件.我尝试过FileFilter和ChoosableFileFilter,它不限制文件选择.这是我的代码:

JFileChooser chooser = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("JPEG file", new String[] {"jpg", "jpeg"});
chooser.setFileFilter(filter);
chooser.addChoosableFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
  debug.put("You chose to open this file: " + chooser.getSelectedFile().getAbsolutePath());
  File selectedFile = new File(chooser.getSelectedFile().getAbsolutePath());
...
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser filefilter

8
推荐指数
2
解决办法
2万
查看次数