有没有办法在Ubuntu下改善JFileChooser的外观和感觉?

时间:2011-02-13 10:10:01

标签: java user-interface swing look-and-feel jfilechooser

我一直在制作一个使用JFileChooser的程序。我用

设置了应用程序
  

UIManager.getSystemLookAndFeelClassName()

对于Ubuntu下的几乎所有东西都可以正常工作。到目前为止我遇到的唯一问题是JFileChooser看起来非常糟糕: JFileChooser with SystemLookAndFeel

有没有办法让它看起来像Ubuntu中的默认文件选择器?即。 Desired file chooser dialog

我尝试过使用

  

UIManager.getCrossPlatformLookAndFeelClassName()

这使得JFileChooser对话框看起来更好,但仍然不是原生的,并且它会使应用程序感觉不受影响。

感谢。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

FileDialog

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

您也可以使用SWT代替摇摆。

Does Swing support Windows 7-style file choosers?

以下代码来自上面的链接

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 ();
    }
}