我一直在制作一个使用JFileChooser的程序。我用
设置了应用程序UIManager.getSystemLookAndFeelClassName()
对于Ubuntu下的几乎所有东西都可以正常工作。到目前为止我遇到的唯一问题是JFileChooser看起来非常糟糕:
有没有办法让它看起来像Ubuntu中的默认文件选择器?即。
我尝试过使用
UIManager.getCrossPlatformLookAndFeelClassName()
这使得JFileChooser对话框看起来更好,但仍然不是原生的,并且它会使应用程序感觉不受影响。
感谢。
答案 0 :(得分:2)
如果我没记错的话,股票JDK使用的是gtk1,但ubuntu目前使用的是gtk2。我忘了哪里但是我遇到了gtk2 for java somewhere。谷歌?可能不是你想要的,对不起。
答案 1 :(得分:1)
您可能会看到FileDialog
是否更具吸引力;这是一个example。
答案 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 ();
}
}