Oi pessoal,
Estou fazendo uma aplicação que é do tipo daquelas de instalador do Windows, que só é preciso apertar o botão NEXT.
Eu crio o JFrame e dou um setContentPane e depois um pack em um JPanel1.
O JPanel1 aparece legal, ai nele (JPanel1) tem um botao NEXT para o proximo JPanel2, só que nao estou conseguindo fazer isso.
Alguem poderia me dar uma ajuda??
Valew
Quando vc der next no JPane1 faça isso:
Jpanel1.setVisible(false);
ClasseJpanel2 Jpanel2 = new ClasseJpanel2();
Jpanel2.setVisible(true);
abraços!
gilmaslima,
Não deu certo. Quando dou o NEXT, a tela fica sem nada.
O código ficou assim:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.setVisible(false);
Painel2 painel2 = new Painel2();
painel2.setVisible(true);
}
Faltou você pegar o evento do clique do botão.
// dentro do método
if(evt.getsource() == botao){
// aqui dentro altere a visibilidade das janelas
}
Estou passando um código pra te ajudar.
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.swing.JLabel;
/**
*
* @author Gilmar
*/
public class Jpanel1 extends JFrame implements ActionListener {
JButton button;
public Jpanel1() {
this.setTitle("JPANEL1");
setSize(400, 300);
setResizable(false);
setLocationRelativeTo(null);
button = new JButton("Next");
Container cp = getContentPane();
button.addActionListener(this);
cp.add(button);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
this.setVisible(false);
Jpanel2 panel2 = new Jpanel2();
panel2.setVisible(true);
}
}
public static void main(String... a) {
Jpanel1 jp = new Jpanel1();
jp.setVisible(true);
}
}
class Jpanel2 extends JFrame implements ActionListener {
JButton button;
public Jpanel2() {
this.setTitle("JPANEL2");
setSize(400, 300);
setResizable(false);
setLocationRelativeTo(null);
button = new JButton("Back");
Container cp = getContentPane();
button.addActionListener(this);
cp.add(button);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
this.setVisible(false);
Jpanel1 jpane1 = new Jpanel1();
jpane1.setVisible(true);
}
}
}
Oi.
Use para isso o CardLayout. Aí vc não precisa ficar controlando o setVisible no braço.
Segue abaixo um tutorial que ensina a utiliza-lo:
http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html
O próprio CardLayout já tem os métodos next e previous, que podem ser chamados diretamente pelo seu botão.
Mais fácil impossível.