Java Look and Feel (L&F) [zamknięte]

163

Tworzę aplikację desktopową z Java Swing do użytku osobistego i potrzebuję pięknego wyglądu i odczucia dla mojej aplikacji. Jak mogę to zrobić za pomocą języka Java lub interfejsu API innej firmy?

rajesh
źródło
1
Nimrod w stylu look-n-feel na licencji LGPL autorstwa Nilo J. Gonzáleza: personales.ya.com/nimrod/faq-en.html . Trochę błędne (nie można ustawić koloru tła dla JButton - rozwiązane za pomocą override paintComponent () przy użyciu półprzezroczystej techniki BufferedImage)
ecle

Odpowiedzi:

199

Istnieje wiele możliwości dla LaFs:


Zasoby :

Powiązane tematy :

Colin Hebert
źródło
2
Szybki sposób, aby zobaczyć, jak Twoja aplikacja wygląda pod Nimbusem, uruchom ją z argumentem `-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel` np. java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nos
3
Aby użyć wyglądu i stylu Metal w istniejących aplikacjach, dodaj -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeelparametr do wywołania Java.
maciej
Które z nich są w porządku na wyświetlaczach „Retina”? (nie tylko na OS X, teraz są też laptopy na Win 8 z ekranami o wysokiej rozdzielczości)
Nazwa wyświetlana
61

Możesz wypróbować L&F, który tworzę - WebLaF
Łączy w sobie trzy części wymagane do pomyślnego rozwoju interfejsu użytkownika:

  • Wieloplatformowy L&F z możliwością ponownego stylizacji dla aplikacji Swing
  • Duży zestaw rozbudowanych komponentów Swing
  • Różne narzędzia i menedżery

Pliki binarne: https://github.com/mgarin/weblaf/releases
Źródło: https://github.com/mgarin/weblaf
Licencje: GPLv3 i komercyjne

Kilka przykładów pokazujących, jak wyglądają niektóre komponenty WebLaF: Niektóre składniki WebLaF

Głównym powodem, dla którego zacząłem od zupełnie nowego L&F, jest to, że większości istniejących L&F brakuje elastyczności - w większości przypadków nie można ich zmienić na nowo (w najlepszym przypadku można zmienić tylko kilka kolorów i włączyć / wyłączyć niektóre elementy interfejsu użytkownika) i / lub są na to tylko niewygodne sposoby. Jest jeszcze gorzej, jeśli chodzi o stylizację komponentów niestandardowych / zewnętrznych - nie wyglądają podobnie do innych komponentów stylizowanych przez jakiś konkretny L&F lub nawet zupełnie inaczej - to sprawia, że ​​Twoja aplikacja wygląda nieprofesjonalnie i nieprzyjemnie.

Moim celem jest dostarczenie w pełni konfigurowalnego L&F z pakietem dodatkowych, szeroko znanych i przydatnych komponentów (na przykład: selektor dat, tabela drzewa, dokowalne i okienka dokumentów i wiele innych) oraz dodatkowe pomocne menedżery i narzędzia, które zmniejszą ilość kodu wymagana do szybkiego zintegrowania WebLaF z Twoją aplikacją i pomocy w tworzeniu niesamowitych interfejsów użytkownika przy użyciu Swing.

Mikle Garin
źródło
Zauważ, że przed wskoczeniem bez patrzenia na licencję, licencja jest gpl. Dla niektórych może to stanowić problem, ale nie musi.
Tinus Tate,
Myślę, że wydanie kilkuset euro na licencję komercyjną jest znacznie lepsze niż przekazanie tych pieniędzy swojemu prawnikowi za jego radę, która prawdopodobnie będzie polegać na „kupieniu licencji komercyjnej, jeśli używasz produktu”. Poza tym ich witryna mówi, że przy zakupie licencji komercyjnej otrzymujesz priorytetowe wsparcie techniczne.
Jeff Holt,
4

Możesz także użyć JTattoo ( http://www.jtattoo.net/ ), ma kilka fajnych motywów, których można użyć.

Po prostu pobierz plik jar i zaimportuj go do swojej ścieżki klas lub dodaj jako zależność mavena:

<dependency>
        <groupId>com.jtattoo</groupId>
        <artifactId>JTattoo</artifactId>
        <version>1.6.11</version>
</dependency>

Oto lista niektórych fajnych dostępnych motywów:

  • com.jtattoo.plaf.acryl.AcrylLookAndFeel
  • com.jtattoo.plaf.aero.AeroLookAndFeel
  • com.jtattoo.plaf.aluminium.AluminiumLookAndFeel
  • com.jtattoo.plaf.bernstein.BernsteinLookAndFeel
  • com.jtattoo.plaf.fast.FastLookAndFeel
  • com.jtattoo.plaf.graphite.GraphiteLookAndFeel
  • com.jtattoo.plaf.hifi.HiFiLookAndFeel
  • com.jtattoo.plaf.luna.LunaLookAndFeel
  • com.jtattoo.plaf.mcwin.McWinLookAndFeel
  • com.jtattoo.plaf.mint.MintLookAndFeel
  • com.jtattoo.plaf.noire.NoireLookAndFeel
  • com.jtattoo.plaf.smart.SmartLookAndFeel
  • com.jtattoo.plaf.texture.TextureLookAndFeel
  • com.jtattoo.plaf.custom.flx.FLXLookAndFeel

pozdrowienia

diegeelvis_SA
źródło
1

Oto kod, który tworzy okno dialogowe, które umożliwia użytkownikowi aplikacji zmianę wyglądu i zachowania w oparciu o systemy użytkownika . Alternatywnie, jeśli możesz przechowywać żądane Look And Feel w swojej aplikacji, mogą one być „przenośne”, co jest pożądanym rezultatem.

   public void changeLookAndFeel() {

        List<String> lookAndFeelsDisplay = new ArrayList<>();
        List<String> lookAndFeelsRealNames = new ArrayList<>();

        for (LookAndFeelInfo each : UIManager.getInstalledLookAndFeels()) {
            lookAndFeelsDisplay.add(each.getName());
            lookAndFeelsRealNames.add(each.getClassName());
        }

        String changeLook = (String) JOptionPane.showInputDialog(this, "Choose Look and Feel Here:", "Select Look and Feel", JOptionPane.QUESTION_MESSAGE, null, lookAndFeelsDisplay.toArray(), null);

        if (changeLook != null) {
            for (int i = 0; i < lookAndFeelsDisplay.size(); i++) {
                if (changeLook.equals(lookAndFeelsDisplay.get(i))) {
                    try {
                        UIManager.setLookAndFeel(lookAndFeelsRealNames.get(i));
                        break;
                    }
                    catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                        err.println(ex);
                        ex.printStackTrace(System.err);
                    }
                }
            }
        }
    }
TheArchon
źródło