5

我一直在制作一个使用 JFileChooser 的程序。我已经设置了应用程序

UIManager.getSystemLookAndFeelClassName()

这适用于 Ubuntu 下的几乎所有东西。到目前为止,我遇到的唯一问题是 JFileChooser 看起来非常糟糕: 带有 SystemLookAndFeel 的 JFileChooser

有没有办法让它看起来像 Ubuntu 中的默认文件选择器?IE。 所需的文件选择器对话框

我试过使用

UIManager.getCrossPlatformLookAndFeelClassName()

这使得 JFileChooser 对话框看起来更好,但仍然不是原生的,它也破坏了应用程序的其余部分。

谢谢。

4

4 回答 4

2

如果我没记错的话,股票 JDK 使用的是 gtk1,但 ubuntu 目前使用的是 gtk2。我忘记了在哪里,但我在某处遇到了 gtk2 for java。谷歌?可能不是你想要的,对不起。

于 2011-02-13T12:00:29.410 回答
1

您可能会看看是否FileDialog更具吸引力;这是一个例子

文件对话框

于 2011-02-13T12:01:23.160 回答
1

Nimbus 的外观和感觉具有不错的文件选择器。尽管这会影响您的整个应用程序,但您可能会喜欢这种外观。

如果需要,您也可以构建自己的文件选择器。

于 2011-02-13T14:06:36.607 回答
0

您也可以使用 SWT 代替 swing。

Swing 是否支持 Windows 7 样式的文件选择器?

以下代码来自上面的链接

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

public class SWTFileOpenSnippet {
    public static void main (String [] args) {
        Display display = new Display ();
        Shell shell = new Shell (display);
        // Don't show the shell.
        //shell.open ();  
        FileDialog dialog = new FileDialog (shell, SWT.OPEN | SWT.MULTI);
        String [] filterNames = new String [] {"All Files (*)"};
        String [] filterExtensions = new String [] {"*"};
        String filterPath = "c:\\";
        dialog.setFilterNames (filterNames);
        dialog.setFilterExtensions (filterExtensions);
        dialog.setFilterPath (filterPath);
        dialog.open();
        System.out.println ("Selected files: ");
        String[] selectedFileNames = dialog.getFileNames();
        for(String fileName : selectedFileNames) {
            System.out.println("  " + fileName);
        }
        shell.close();
        while (!shell.isDisposed ()) {
            if (!display.readAndDispatch ()) display.sleep ();
        }
        display.dispose ();
    }
}
于 2013-04-27T20:36:01.157 回答