Есть ли способ улучшить внешний вид JFileChooser под Ubuntu? - PullRequest
4 голосов
/ 13 февраля 2011

Я делал программу, которая использует JFileChooser. Я настроил приложение с помощью

UIManager.getSystemLookAndFeelClassName ()

Который прекрасно работает почти для всего под Ubuntu. Единственная проблема, с которой я столкнулся, это то, что JFileChooser выглядит довольно ужасно: JFileChooser with SystemLookAndFeel

Есть ли способ сделать так, чтобы это выглядело как средство выбора файлов по умолчанию в Ubuntu? то есть. Desired file chooser dialog

Я пытался использовать

UIManager.getCrossPlatformLookAndFeelClassName ()

Что делает диалоговое окно JFileChooser лучше , но все еще не выглядит как "родное", и это также портит остальную часть приложения.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 13 февраля 2011

Если я правильно помню, стандартный JDK использовал gtk1, но в настоящее время ubuntu использует gtk2.Я забыл где, но я где-то сталкивался с gtk2 для Java.Google?Наверное, не то, на что вы надеялись, извините.

1 голос
/ 13 февраля 2011

Nimbus имеет неплохой выбор файлов. Хотя это повлияет на все ваше приложение, вам может понравиться внешний вид.

Также вы можете создать свой собственный файл выбора, если это необходимо.

1 голос
/ 13 февраля 2011

Вы можете увидеть, если FileDialog более привлекателен;Вот пример .

FileDialog

0 голосов
/ 28 апреля 2013

Вы также можете использовать 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 ();
    }
}
...