How to open files in Java Swing without JFileChoos

2019-02-19 04:01发布

I'm using Java Swing (GUI) and I want to add a button to my project for opening files.

I don't like the JFileChooser since it opens a small window for browsing through the files of the directories. Can I use something else instead of the JFileChooser under Java Swing?

I've tried to use elements of SWT but it didn't work, meaning is the use of the button object and then use it inside the JFrame, but that failed, so I guess SWT and Swing don't mix together?

Here is the example of Java Swing with JFileChooser and I'm looking for something like this to put in my JFrame.

Windows file dialog

2条回答
Bombasti
2楼-- · 2019-02-19 04:39

JFileChooser with the native PLAF seems to fulfill the stated requirement.

Native PLAF file chooser

import javax.swing.JFileChooser;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class NativeFileChooser {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(
                            UIManager.getSystemLookAndFeelClassName());
                } catch(Exception e) {
                    e.printStackTrace();
                }
                JFileChooser jfc = new JFileChooser();
                jfc.showOpenDialog(null);
            }
        });
    }
}

Still not quite to your liking? Then you might start with this one & change it to need:


..so I guess SWT and Swing don't mix together?

It is generally not a good idea to mix Swing/AWT/SWT components in the same top-level container. It is not a problem to open an AWT FileDialog over a Swing based JFrame since they are both top-level containers. I am pretty sure the same would apply to Swing/SWT or AWT/SWT.

查看更多
地球回转人心会变
3楼-- · 2019-02-19 05:04

If you do not need the flexibility of the JFileChooser, you can opt for the FileDialog which uses the native OS file dialog. See also Code ranch topic and this answer on SO

查看更多
登录 后发表回答