Olá. Sou iniciante em Java, estou utilizando o Eclipse e fazendo uso do Swing para criar um programa que tem algumas janelas. Minha dúvida é: como fazer para que ao clicar em um botão, a janela tenha sua aparência modificada, passando a mostrar outros componentes. E, quando clicar em outro botão, passe a mostrar a janela incial.
Nota: Não necessariamente tem que ser outra janela, apenas a aparencia tem que mudar. Só não quero colocar setVisible(false), ou setVisiblie(true) em tudo.
Tipo : Janela A, clico no botão x, passa a mostrar a janela B
Janela B, clico no botão y, passa a mostrar a janela A .
Resolvi o problema utilizando uma Janela Modal e separando do primeiro Frame
códio exemplo para cria a Janela Modal
importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassNewTeste{publicstaticvoidmain(String[]args){DialogFrameframe=newDialogFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}classDialogFrameextendsJFrame{publicDialogFrame(){setTitle("DialogFrame");setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);JMenuBarmenuBar=newJMenuBar();setJMenuBar(menuBar);JMenufileMenu=newJMenu("File");menuBar.add(fileMenu);JMenuItemaboutItem=newJMenuItem("About");aboutItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){if(dialog==null)// primeira vezdialog=newAboutDialog(DialogFrame.this);dialog.setVisible(true);}});fileMenu.add(aboutItem);JMenuItemexitItem=newJMenuItem("Exit");exitItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){System.exit(0);}});fileMenu.add(exitItem);}publicstaticfinalintDEFAULT_WIDTH=300;publicstaticfinalintDEFAULT_HEIGHT=200;privateAboutDialogdialog;}classAboutDialogextendsJDialog{publicAboutDialog(JFrameowner){super(owner,"About DialogTeste",true);add(newJLabel("<html><h1><i>Core Java</i></h1><hr>www.javafree.org</html>"),BorderLayout.CENTER);JButtonok=newJButton("Ok");ok.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){setVisible(false);}});JPanelpanel=newJPanel();panel.add(ok);add(panel,BorderLayout.SOUTH);setSize(250,150);}}