@wldomiciano, todos,
O que eu devo fazer para ver se eu consegui configurar corretamente o Nimbus?
Eu executei o comando que você citou para executar no Java 12, a seguinte captura de tela mostra isto:
Como saber se eu configurei corretamente o Nimbus?
Pra saber se deu certo basta criar uma aplicação simples com alguns botões e ver se a aparencia é a do Nimbus.
No final desta página tem uns prints apresentando a aparencia que cada LookAndFeel tem. O quinto item é o do Nimbus.
Só que tem um problema. Fiz uns testes e percebi o seguinte:
Se vc criar o arquivo dentro da pasta lib
, nada acontece. Mas se criar dentro da pasta conf
(tá do lado da lib
), aí sim o sistema reconhece a configuração.
Quando este arquivo está presente a minha aplicação não inicia corretamente, dá erro.
Eu não sei dizer o por quê desse erro estar acontecendo, por isso eu simplesmente exclui o arquivo swing.properties que criei e tudo voltou ao normal.
Um conselho que dou é: confie em nós, o Nimbus define apenas como a aparencia da sua aplicação vai ser, vc não precisa dele pra se tornar um desenvolvedor Java, ele não vai fazer diferença no seu aprendizado, pelo meno não agora. Prossiga seus estudos normalmente com o livro. Existe um mundo de coisas legais pra se aprender ainda, não se prenda à esse único paragrafo do livro, não faça isso consigo mesmo.
Por favor, deixa eu ver se o @staroski conseguiu configurar o Nimbus.
Você conseguiu configurar o Nimbus?
Se sim, por favor, mostre o passo a passo da configuração do Nimbus se possível com capturas de tela.
Mas se você não pode mostrar o passo a passo da configuração do Nimbus com capturas de tela, por favor, mostre sem capturas de tela.
Eu esqueci de perguntar:
O livro dos Deitel diz que para configurar o Nimbo como o padrão para todos os aplicativos Java, você precisa criar um arquivo de texto chamado swing.properties na pasta lib tanto da sua pasta de instalação do JDK como da sua pasta de instalação do JRE.
Eu mostrei para vocês através de captura de tela que não existe nenhuma pasta chamada de jre dentro da pasta de instalação do jdk 12, então é impossível criar um arquivo de texto chamado swing.properties na pasta lib dentro da pasta de instalação do JRE no Java 12 porque a pasta jre não existe no Java 12, eu estou certo?
Se a pasta jre não existe no Java 12, então é impossível configurar o Nimbus no Java 12 porque é impossível criar um arquivo de texto chamado swing.properties na pasta lib dentro da pasta de instalação do JRE no Java 12 porque a pasta jre não existe no Java 12?
Descobri!
Eu fiz mais testes e é o seguinte:
No Java 12 não tem a pasta JRE, mas vc não precisa dela pra fazer funcionar. O que faremos é criar o arquivo swing.properties
dentro da pasta conf
ao invés da pasta lib
.
Para isso, abra o Prompt de Comando como administrador e execute o seguinte comando:
echo swing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel> "C:\Program Files\java\jdk-12\conf\swing.properties"
Para saber se funcionou, compile e rode o código abaixo. É um código simples que abre uma pequena janela com quatro botões, a idéia é apenas testar a aparencia dos botões. O código também lista os LookAndFeels disponíveis no sistema.
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.JFrame;
import javax.swing.JButton;
class Teste {
public static void main(String... args) {
JFrame jframe = new JFrame("Testando LookAndFeels");
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setLayout(new GridLayout(2, 2));
jframe.add(new JButton("Botao A"));
jframe.add(new JButton("Botao B"));
jframe.add(new JButton("Botao C"));
jframe.add(new JButton("Botao D"));
jframe.setPreferredSize(new Dimension(200, 100));
jframe.pack();
jframe.setLocationRelativeTo(null);
jframe.setVisible(true);
for (LookAndFeelInfo look : UIManager.getInstalledLookAndFeels()) {
System.out.printf("%20s %s\n", look.getName(), look.getClassName());
}
}
}
Se vc executar este programa sem configurar o Nimbus, isso é o que vc deve enxergar:
Viu como é a aparencia dos botões? Em vermelho eu destaquei a lista dos LookAndFeels que tem no meu Windows.
Depois que vc realizar a configuração do Nimbus, o print abaixo é o que vc deve ver:
Perceba que os botões estão diferentes, há um espaçamento maior entre eles, ficaram mais cinza.
Eu usei os botões porque achei mais facil de codificar e visualizar.
Avise se algo der errado.
Cara, não há o que configurar.
Não precisa criar arquivo swing.properties
.
Basta executar o método abaixo ANTES de instanciar sua tela:
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
O tempo que você está perdendo tentando “configurar o Nimbus” você poderia investir aprendendo a programar.
Ele tá tentando seguir o livro.
Eu achei mais fácil o ajudar a alcançar esse objetivo do que convencê-lo a fazer de outro jeito.
E, embora sua orientação seja o melhor caminho, tem o que configurar sim (se a pessoa preferir), como eu mostrei na minha outra resposta.
Eu não decidi perder tempo tentando configurar o Nimbus, eu simplesmente tentei aprender praticar o que está escrito no livro Java Como Programar, eu falei isso várias vezes.
Eu disse que eu postei este tópico sobre o Nimbus para estar preparado para começar meus estudos do Java no livro Java Como Programar 10 edição, quem diz que você está pronto para começar seus estudos do Java nesse livro depois de falar sobre o Nimbus é este livro nos seguintes parágrafos que eu copiei e colei várias vezes nesse tópico:
"A nova aparência e funcionamento do Java Nimbus
O Java vem com uma aparência e comportamento multiplataforma conhecida como Nimbus. Para os programas com as interfaces gráficas de usuário Swing (por exemplo, capítulos 12 e 22), configuramos nossos computadores de teste para usar o Nimbus como a aparência e o comportamento padrão.
Para configurar o Nimbo como o padrão para todos os aplicativos Java, você precisa criar um arquivo de texto chamado swing.properties na pasta lib tanto da sua pasta de instalação do JDK como da sua pasta de instalação do JRE. Insira a seguinte linha do código no arquivo:
swing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
Para obter informações adicionais sobre a localização dessas pastas de instalação, visite http://docs.oracle.com/javase/7/
docs/webnotes/install/index.html. [Observação: além do JRE autônomo, há um JRE aninhado na pasta de instalação do seu JDK. Se estiver utilizando um IDE que depende do JDK (por exemplo, NetBeans), talvez você também precise inserir o arquivo swing.properties na pasta lib aninhada na pasta jre.]
Agora você está pronto para começar seus estudos do Java. Esperamos que goste do livro"!
É perda de tempo estudar o livro Java Como Programar 10 edição dos Deitel para aprender ser Programador Java Júnior porque esse livro diz que você está pronto para começar seus estudos do Java nesse livro depois de falar sobre o Nimbus?
Eu tentei configurar o Nimbus usando o Java 12 para ver se funciona o que o livro Java Como Programar 10 edição ensina sobre a configuração do Nimbus porque eu não sabia que não existe nada chamado de jre no Java 12.
É impossível seguir o livro para configurar o Nimbus usando o Java 12 porque não existe nada chamado de jre no Java 12, eu mostrei para vocês que não existe nada chamado de jre no Java 12 através de captura de tela.
Depois eu irei avisar se algo der errado.
Se eu não conseguir configurar o Nimbus, eu irei desistir de tentar configurar o Nimbus para estudar outros assuntos de Java.
Para configurar o Nimbo como o padrão para todos os aplicativos Java segundo o livro Java Como Programar 10 edição, você precisa criar um arquivo de texto chamado swing.properties na pasta lib tanto da sua pasta de instalação do JDK como da sua pasta de instalação do JRE, mas não existe pasta de instalação jre no Java 12.
Isso significa que a maneira de configurar o Nimbus mudou ou isso significa que o Nimbus é obsoleto?
Tanto o @staroski quanto eu fomos claros ao dizer que é perda de tempo quebrar tanto a cabeça com a configuração do Nimbus. Ninguém disse que é perda de tempo estudar por esse livro.
É impossível seguir o livro porque no Java 12 não tem a pasta JRE, porém não é impossível fazer a configuração como eu expliquei na outra resposta.
Seguir em frente nos estudos ao invés de ficar preso neste detalhe será uma excelente decisão.
Eu mesmo nem sabia desse tipo de configuração antes de vc perguntar como fazer. Aprendi agora e posso dizer que não me fez falta saber disso.
Significa somente que mudou.
Mas Nimbus faz parte do Swing, que é a parte da biblioteca padrão do Java que nos permite criar interfaces gráficas, e o Swing em si está ficando pra trás.
Como já foi dito aqui, é perda de tempo tentar configurar o Nimbus, é tão perca de tempo pq não precisa configurar, só utilizar um comando no java e também pq Nimbus faz parte do Swing e Swing ja era, como disse o @wldomiciano
Talvez para você seja bom video-aulas, já tentou? Eu mesmo prefiro elas do que livros.
[quote=“Mike, post:31, topic:385005”]
Como já foi dito aqui, é perda de tempo tentar configurar o Nimbus, é tão perca de tempo pq não precisa configurar, só utilizar um comando no java e também pq Nimbus faz parte do Swing e Swing ja era, como disse o @wldomiciano[/quote]
Você disse que é perda de tempo tentar configurar o Nimbus, é tão perca de tempo pq não precisa configurar, só utilizar um comando no java.
Qual é esse comando?
Eu decidi tentar configurar o Nimbus porque isso está escrito no livro Java Como Programar.
Eu nunca decidi estudar conteúdo de Java para perder tempo.
Eu não teria tido interesse de tentar configurar o Nimbus se o livro Java Como Programar 10 edição não tivesse conteúdo sobre o Nimbus
Eu estou tentando executar os códigos que o @wldomiciano me sugeriu para executar o Nimbus.
Eu irei desistir deste tópico depois que eu executar os códigos que o @wldomiciano me sugeriu para executar o Nimbus e depois que ele me responder, mas eu também irei esperar você (Mike) responder as perguntas desta mensagem.
Você disse que prefere video-aulas do que livros.
Quais são as video aulas que você recomenda para aprender ser Programador Java Júnior?
Eu executei javac -version para mostrar que eu configurei as variáveis de ambiente:
Microsoft Windows [versão 6.1.7601]
Copyright © 2009 Microsoft Corporation. Todos os direitos reservados.
C:\Users\NG>javac -version
javac 12.0.1
C:\Users\NG>
Eu compilei o programa para executar o seguinte código:
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.JFrame;
import javax.swing.JButton;
class Teste {
public static void main(String… args) {
JFrame jframe = new JFrame(“Testando LookAndFeels”);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setLayout(new GridLayout(2, 2));
jframe.add(new JButton("Botao A"));
jframe.add(new JButton("Botao B"));
jframe.add(new JButton("Botao C"));
jframe.add(new JButton("Botao D"));
jframe.setPreferredSize(new Dimension(200, 100));
jframe.pack();
jframe.setLocationRelativeTo(null);
jframe.setVisible(true);
for (LookAndFeelInfo look : UIManager.getInstalledLookAndFeels()) {
System.out.printf("%20s %s\n", look.getName(), look.getClassName());
}
}
}
O resultado da compilação é este:
C:\game>javac nimbus.java
C:\game>
Eu executei isto:
C:\game>javac nimbus.java
C:\game>java nimbus.java
Metal javax.swing.plaf.metal.MetalLookAndFeel
Nimbus javax.swing.plaf.nimbus.NimbusLookAndFeel
CDE/Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel
Windows com.sun.java.swing.plaf.windows.WindowsLookAndFeel
Windows Classic com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Apareceu os botões que você mostrou neste tópico.
Eu tentei executar o seguinte comando para executar o Nimbus:
echo swing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel> “C:\Program Files\java\jdk-12.0.1\conf\swing.properties”
Isto apareceu no prompt de comando:
C:>cd game
C:\game>javac nimbus.java
C:\game>echo swing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel> “C:\Pro
gram Files\java\jdk-12.0.1\conf\swing.properties”
C:\game>
Agora eu tentei executar este arquivo para executar o Nimbus:
C:>cd game
C:\game>javac nimbus.java
C:\game>echo swing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel> “C:\Pro
gram Files\java\jdk-12.0.1\conf\swing.properties”
C:\game>javac nimbus.java
C:\game>java nimbus.java
Metal javax.swing.plaf.metal.MetalLookAndFeel
Nimbus javax.swing.plaf.nimbus.NimbusLookAndFeel
CDE/Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel
Windows com.sun.java.swing.plaf.windows.WindowsLookAndFeel
Windows Classic com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
O resultado acima mostra que eu consegui executar o Nimbus praticando o que o @wldomiciano disse.
Se não for pedir demais, por favor, me fale o seu e-mail em mensagem privada para eu lhe mostrar as minhas capturas de tela das execuções que eu citei acima para você mostrar neste tópico.
Eu peço isso por que eu não sei enviar essas capturas de tela.
Fico feliz que tenha conseguido.
O @staroski já mostrou, confere novamente a resposta dele aqui.
É usando esse método: UIManager.setLookAndFeel()
.
Eu fiz o exemplo abaixo onde eu adicionei o botão “Mudar”, execute o exemplo e clique neste botão para alterar ir alterando o LookAndFeel. Os outros botões estão ali apenas de enfeite mesmo.
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.BorderFactory;
import javax.swing.JButton;
class Teste {
static int count = 0;
public static void main(String... args) throws Exception {
JFrame jframe = new JFrame("Testando LookAndFeels");
LookAndFeelInfo[] looks = UIManager.getInstalledLookAndFeels();
JButton button = new JButton("Mudar");
JLabel label = new JLabel(looks[count].getName());
label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
UIManager.setLookAndFeel(looks[count].getClassName());
button.addActionListener(e -> {
try {
count = ++count < looks.length ? count : 0;
label.setText(looks[count].getName());
UIManager.setLookAndFeel(looks[count].getClassName());
SwingUtilities.updateComponentTreeUI(jframe);
jframe.pack();
} catch (Exception exc) {
System.out.println(exc.getMessage());
}
});
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setLayout(new GridLayout(3, 2));
jframe.add(button);
jframe.add(new JButton("Teste B"));
jframe.add(new JButton("Teste C"));
jframe.add(new JButton("Teste D"));
jframe.add(label);
jframe.setPreferredSize(new Dimension(200, 120));
jframe.setLocationRelativeTo(null);
jframe.pack();
jframe.setVisible(true);
}
}
Eu pretendo executar este código depois.
Eu irei postar um tópico sobre outro assunto depois que eu executar esse seu código e tiver respostas sobre outras perguntas sobre o Nimbus.
Talvez vocês perceberam que eu sou o tipo de estudante que talvez aprenderá programar se eu tiver um professor de curso online pago que tire as minhas dúvidas ou se eu tiver um professor sentado ao meu lado usando um computador.
Eu prefiro o seguinte conteúdo da apostila da Caelum sobre a instalação do JDK no Windows e de configuração de variáveis de ambiente também no Windows do que o conteúdo do livro Java Como Programar 10 edição porque o conteúdo dessa apostila é fácil de entender e tem até capturas de tela, mas o conteúdo do livro Java Como Programar 10 edição sobre esses assuntos aponta para links de conteúdo em inglês: https://www.caelum.com.br/apostila-java-orientacao-objetos/apendice-instalacao-do-java/#instalao-do-jdk-em-ambiente-windows
Você disse que prefere video-aulas do que livros.
Quais são as video aulas que você recomenda para aprender ser Programador Java Júnior?
@wldomiciano, @staroski, @Mike, @javaflex, @juliofsn, @ViniGodoy, todos,
Se é verdade que é perda de tempo tentar configurar o Nimbus, porque o livro Java Como Programar 10 edição ensina configurar o Nimbus dizendo por exemplo que para configurar o Nimbo como o padrão para todos os aplicativos Java, você precisa criar um arquivo de texto chamado swing.properties na pasta lib tanto da sua pasta de instalação do JDK como da sua pasta de instalação do JRE?
Se é verdade que é perda de tempo tentar configurar o Nimbus também porque Nimbus faz parte do Swing e Swing ja era, porque o livro Java Como Programar 10 edição ensina configurar o Nimbus?
Só um adendo. A versão 8 do Java para download a partir de hoje (16/04/2019) no site da Oracle somente mediante cadastro.
O autor quis assim.
Não, o swing.properties
é só uma forma de você sobrescrever as configurações padrão do Swing.