Aparência e sensação de Java (L&F) [fechado]


163

Estou desenvolvendo um aplicativo de desktop com Java Swing para uso pessoal. Estou precisando de um visual bonito para o meu aplicativo. Como posso fazer isso usando Java ou uma API de terceiros?


1
Nimrod, look-n-feel da LGPL, por Nilo J. González: personales.ya.com/nimrod/faq-en.html . Um buggy pouco (não é possível definir a cor de fundo para um JButton - resolvido com paintComponent override () usando uma técnica translúcido BufferedImage)
ECLE

Respostas:


199

2
Maneira rápida de ver como o aplicativo fica no Nimbus, inicie o aplicativo com o argumento -Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel`, por exemplo java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nos

3
Para usar a aparência do Metal em aplicativos existentes, adicione -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeelparâmetro à invocação de java.
7282 maciej

Quais deles estão bem nos displays "Retina"? (não apenas no OS X, há laptops em Win 8 com telas de alta DPI agora, também)
Display Name

61

Você pode experimentar o L&F que estou desenvolvendo - WebLaF
Ele combina três partes necessárias para o desenvolvimento bem-sucedido da interface do usuário:

  • L&F reformulado de plataforma cruzada para aplicações Swing
  • Grande conjunto de componentes de giro estendidos
  • Vários utilitários e gerentes

Binários: https://github.com/mgarin/weblaf/releases
Fonte: https://github.com/mgarin/weblaf
Licenças: GPLv3 e Commercial

Alguns exemplos mostrando como são os componentes do WebLaF: Alguns componentes do WebLaF

A principal razão pela qual eu comecei com um L&F totalmente novo é que a maioria dos L&F existentes não tem flexibilidade - na maioria dos casos, você não pode modificá-los novamente (é possível alterar apenas algumas cores e ativar / desativar alguns elementos da interface do usuário na melhor das hipóteses) e / ou existem apenas maneiras inconvenientes de fazer isso. É ainda pior quando se trata de modelagem de componentes personalizados / de terceiros - eles não se parecem com outros componentes modelados por L&F específico ou totalmente diferentes - que fazem com que seu aplicativo pareça pouco profissional e desagradável.

Meu objetivo é fornecer um L&F totalmente personalizável com um pacote de componentes úteis e amplamente conhecidos (por exemplo: seletor de datas, tabela em árvore, painéis encaixáveis ​​e de documentos e muitos outros) e gerentes e utilitários úteis adicionais, que reduzirão o quantidade de código necessária para integrar rapidamente o WebLaF ao seu aplicativo e ajudar a criar UIs impressionantes usando o Swing.


Observe que antes de entrar sem olhar para a licença, a licença é gpl. Isso pode ou não ser um problema para alguns.
Tinus Tate

Penso que gastar algumas centenas de euros para uma licença comercial é muito melhor do que dar esse dinheiro ao seu advogado por seu conselho, que provavelmente será "compre uma licença comercial se você usar o produto". Além disso, o site diz que você recebe suporte técnico priorizado quando compra uma licença comercial.
Jeff Holt

4

Você também pode usar o JTattoo ( http://www.jtattoo.net/ ), que possui alguns temas interessantes que podem ser usados.

Basta baixar o jar e importá-lo para o seu caminho de classe ou adicioná-lo como uma dependência independente:

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

Aqui está uma lista de alguns dos temas interessantes que eles têm disponíveis:

  • 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

Saudações


1

Aqui está o código que cria uma caixa de diálogo que permite ao usuário do seu aplicativo alterar a aparência com base nos sistemas do usuário . Como alternativa, se você pode armazenar a aparência desejada em seu aplicativo, eles podem ser "portáteis", que é o resultado desejado.

   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);
                    }
                }
            }
        }
    }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.