标签: jfilechooser

Swing对话框如何工作?

如果你在Swing中打开一个对话框,比如一个JFileChooser,它就像这个伪代码:

swing event thread {
  create dialog
  add listener to dialog close event {
    returnValue = somethingFromDialog
  }
  show dialog
  (wait until it is closed)
  return returnValue
}

我的问题是:这怎么可能有效?如您所见,线程等待返回,直到对话框关闭.这意味着Swing事件线程被阻止.然而,人们可以与对话框进行交互,AFAIK需要该对话框才能运行.

那怎么办?

java swing multithreading jfilechooser jdialog

18
推荐指数
2
解决办法
2347
查看次数

JFileChooser选择目录但显示文件

我觉得应该有一个简单的方法来做到这一点,但我无法弄清楚.我有一个允许用户选择目录的JFileChooser.我想显示目录中的所有文件以向用户提供一些上下文,但只有目录应被接受作为选择(可能在选择文件时禁用"打开"按钮).有这么简单的方法吗?

java swing jfilechooser

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

JFileChooser过滤器

我正在JFileChooser我的程序中,但只拍摄图像.所以我决定添加过滤器:

import javax.swing.*;

public class fileChooser {

 public static void main(String[] args) {
    JPanel panel = new JPanel();

    final JFileChooser fc = new JFileChooser();
    int file = fc.showOpenDialog(panel);
    fc.addChoosableFileFilter(new ImageFilter());
    fc.setAcceptAllFileFilterUsed(false);
 }
}
Run Code Online (Sandbox Code Playgroud)

我直接从Java教程那里得到了.但Eclipse强调以下内容为错误:

fc.addChoosableFileFilter(new ImageFilter());
fc.setAcceptAllFileFilterUsed(false);
Run Code Online (Sandbox Code Playgroud)

有什么建议?

java swing jfilechooser image

17
推荐指数
3
解决办法
4万
查看次数

JFileChooser更改Windows中的默认目录

我想在Windows上将我的JFileChooser的默认目录更改为"我的音乐".这个目录C:\Users\Fre\Music在我的帐户上,因为我的用户名是Fre

默认设置为开启C:\Users\Fre\Documents(取决于我认为的OS).我怎么能改变这个?

java windows jfilechooser

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

JFileChooser - 在当前目录中打开

我有一个简单的JFileChooser以下面的方式设置

JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
chooser.setFileFilter(new FileFilter() {
     ...
});

int v = chooser.showOpenDialog(this);
if (v == JFileChooser.APPROVE_OPTION) {
     File file = chooser.getSelectedFile();
     System.out.println(file.getAbsolutePath());
}
Run Code Online (Sandbox Code Playgroud)

如您所见,此FileChooser从当前目录开始,在我的Netbeans项目中,该目录是项目文件夹的根目录.这是问题:当我选择一个文件并打印出绝对路径时,它包含"."在路径中.例如,我得到的输出是:

/Users/MyName/Folder1/Folder2/./Temp.xls
Run Code Online (Sandbox Code Playgroud)

当然,这很奇怪,特别是因为我正在向用户显示这个.现在,我可能是hacky并做一些有趣的子串处理东西来摆脱那"/./"部分.但是......是否有一种非懒惰的程序员方法来解决这个问题?提前致谢!

java swing jfilechooser

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

jfilechooser - 将目录设置为文件中的路径

我试图通过这样的东西(使用commons-io)在JFilechooser中设置目录路径:

String fileContents = IOUtils.toString(new FileInputStream("path.txt"));
File theDirectory = new File(fileContents);

filechooser = new JFileChooser();
fileChooser.setCurrentDirectory(theDirectory);
filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
Run Code Online (Sandbox Code Playgroud)

我正在使用getCanonicalPath()来获取路径并写入文件path.txt

path = file.getCanonicalPath();
Run Code Online (Sandbox Code Playgroud)

我不打算把我的所有代码放在这里,但我确信程序会在path.txt中写入和读取路径.我没有收到任何错误,但每次运行程序时,它总是在我的文件夹中打开JFilechooser.我做错了什么?

java swing jfilechooser

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

在Java中设置文件创建时间戳

我知道设置Java中不存在创建时间戳,因为Linux没有它,但有没有办法在Java中设置文件(Windows)创建时间戳?我有一个基本的修改时间戳编辑器,我在这里制作.

import java.io.*;
import java.util.*;
import java.text.*;
import javax.swing.*;

public class chdt{
    static File file;
    static JFrame frame = new JFrame("Input a file to change");
    public static void main(String[] args) {
        try{

            final JFileChooser fc = new JFileChooser();
            fc.setMultiSelectionEnabled(false);

            //BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
            //System.out.println("Enter file name with extension:");
            //String str = bf.readLine();
            JOptionPane.showMessageDialog(null, "Input a file to change.");
            frame.setSize(300, 200);

            frame.setVisible(true);

            int retVal = fc.showOpenDialog(frame);
            if (retVal == JFileChooser.APPROVE_OPTION) {
                file = fc.getSelectedFile();
                frame.setVisible(false);
            } else {
                JOptionPane.showMessageDialog(null, …
Run Code Online (Sandbox Code Playgroud)

java jfilechooser date file

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

如何从File Chooser获取完整路径目录

我正在使用Netbeans 7.1.2创建一个应用程序,我正在使用文件选择器,但我不希望文件选择器获取文件,而是我希望它返回它当前所在目录的完整路径.

文件选择器的样子

当用户在此处单击打开时,我希望它返回完整路径而不是文件.我该怎么做呢?

java swing jfilechooser

14
推荐指数
1
解决办法
5万
查看次数

如何使用操作系统的默认文件选择器?java的

我只是想知道:Gmail如何使用Windows/Mac文件选择器上传文件?有没有办法在Java中这样做?

在此输入图像描述

就个人而言,我不喜欢它的JFileChooser外观,我认为我的用户能够使用他们更习惯的东西会更好.有人提示吗?

java jfilechooser

14
推荐指数
3
解决办法
1万
查看次数

使用JFileChooser设置默认保存扩展名

我正在尝试使用保存文件JFileChooser.但是,我似乎遇到了一些麻烦.这是我的代码:

    if (e.getSource() == saveMenu) {

        JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

        FileNameExtensionFilter xmlFilter = new FileNameExtensionFilter("xml files (*.xml)", "xml");
        // add filters
        chooser.addChoosableFileFilter(xmlFilter);
        chooser.setFileFilter(xmlFilter);

        int result = chooser.showSaveDialog(Simulation.this);

        if (result == chooser.APPROVE_OPTION) {
            writeToXML(chooser.getSelectedFile());
        }

    }
Run Code Online (Sandbox Code Playgroud)

这不会强制文件具有.xml扩展名,因此我尝试使用以下代码强制使用扩展名.xml保存文件

     OutputFormat format = OutputFormat.createPrettyPrint();
     format.setEncoding("UTF-8");
     XMLWriter xmlWriter = null;
     try {              
         xmlWriter = new XMLWriter(new OutputStreamWriter(
                 new FileOutputStream(f+".xml"), "UTF8"),
                 format);
Run Code Online (Sandbox Code Playgroud)

然而,这个我无法阻止写入用户xpto.xmlJFileChooser,如果他们这样做,该文件将有"两个扩展":这将是一个文件名为xpto.xml.xml

所以我的问题是:

  • 如何JFileChooser默认保存xml文件?
  • 如果用户插入了像xpto.xml这样的文件名,我该如何将其保存为xpto.xml而不是xpto.xml.xml?

java swing jfilechooser save

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

标签 统计

java ×10

jfilechooser ×10

swing ×7

date ×1

file ×1

image ×1

jdialog ×1

multithreading ×1

save ×1

windows ×1