Alterar modo de exibição de jFrame

4 respostas Resolvido
K

Tenho este jFrame:

Gostaria que ele fosse executado nesse layout:

No primeiro, o LookAndFeel é o “metal” e no segundo é o “nimbus”. Alterei de “Metal” para “Nimbus”, conforme abaixo:

public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
              for(javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()){
                  if("Nimbus".equals(info.getName())){
                      javax.swing.UIManager.setLookAndFeel(info.getClassName());
                  }
              }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(FormCadastroFamiliar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(FormCadastroFamiliar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(FormCadastroFamiliar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(FormCadastroFamiliar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }

mas não alterou o layout. Como faço para alterar o LooAndFeel do jFrame?

4 Respostas

M

Em sua classe main, coloque:

public static void main(String[] args) {
	try {
		for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
			if ("Nimbus".equals(info.getName())) {
				UIManager.setLookAndFeel(info.getClassName());
				break;
			}
		}
	} catch (UnsupportedLookAndFeelException exc) {
		exc.printStackTrace();
	} catch (ClassNotFoundException exc) {
		exc.printStackTrace();
	} catch (InstantiationException exc) {
		exc.printStackTrace();
	} catch (IllegalAccessException exc) {
		exc.printStackTrace();
	}
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				App frame = new App();
				frame.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}
R

Ola, se atente ao detalhe que o LookAndFeel é único para todas as telas da aplicação, sendo definido uma única vez no main executado. Não tem um LookAndFeel por tela, que é isso que entendi que vc quis dizer.
O LookAndFeel será aquele configurado no main que vc executar.
Dica: procure sempre executar o PROJETO e não uma classe diretamente, ou seja, se vc fica executando direto uma tela, hora outra, isto irá acontecer pois estará trabalhando com vários mains, algo incomum já que o projeto compilado tem apenas um main, portanto a dica é defina um único main com um LookAndFeel e sempre execute a partir dele (se for Netbeans defina esta como a classe principal).
Se por acaso me equivoquei no entendimento do problema, ou qualquer outra coisa, estou a disposição.

K

Rodrigo_Void,

O que aconteceu, é que havia esquecido qual era o meu form principal. Fui lá e fiz a alteração. Obrigado pela informação.

K
Solucao aceita

Mattwcosta,

bastava eu alterar no form principal. Como disse abaixo, havia esquecido qual era. Agora resolvido. Obrigado.

Criado 15 de janeiro de 2017
Ultima resposta 16 de jan. de 2017
Respostas 4
Participantes 3