fabiofalci 11 de fev. de 2008
joaosavio 11 de fev. de 2008
Vi a documentacao, mas eu programo arrastando componentes. Já consegui transformar o panel em cardLayout. Eu so preciso de uma funcao void pra trocar os paineis.
Se puder ajudar agradeco
abraços
fabiofalci 12 de fev. de 2008
Ta na mão.
Um examplo bem simples que fica trocando entre 3 JPanel.
public class CardLayoutTest extends JPanel {
CardLayout cardLayout = null ;
JPanel mainPanel = null ;
JPanel panel1 = null ;
JPanel panel2 = null ;
JPanel panel3 = null ;
public CardLayoutTest () {
this . initialize ();
}
protected void initialize () {
this . setLayout ( new BorderLayout ());
this . add ( getPanel (), BorderLayout . CENTER );
this . add ( getButtonPanel (), BorderLayout . SOUTH );
}
public JPanel getButtonPanel () {
JPanel buttonPanel = new JPanel ();
JButton b = new JButton ( "1" );
b . addActionListener ( new ActionListener () {
public void actionPerformed ( ActionEvent e ) {
cardLayout . show ( mainPanel , "panel1" );
}
});
buttonPanel . add ( b );
b = new JButton ( "2" );
b . addActionListener ( new ActionListener () {
public void actionPerformed ( ActionEvent e ) {
cardLayout . show ( mainPanel , "panel2" );
}
});
buttonPanel . add ( b );
b = new JButton ( "3" );
b . addActionListener ( new ActionListener () {
public void actionPerformed ( ActionEvent e ) {
cardLayout . show ( mainPanel , "panel3" );
}
});
buttonPanel . add ( b );
return buttonPanel ;
}
public JPanel getPanel1 () {
if ( panel1 == null ) {
panel1 = new JPanel ();
panel1 . setBackground ( Color . WHITE );
panel1 . add ( new JLabel ( "Panel1" ));
}
return panel1 ;
}
public JPanel getPanel2 () {
if ( panel2 == null ) {
panel2 = new JPanel ();
panel2 . setBackground ( Color . LIGHT_GRAY );
panel2 . add ( new JLabel ( "Panel2" ));
}
return panel2 ;
}
public JPanel getPanel3 () {
if ( panel3 == null ) {
panel3 = new JPanel ();
panel3 . setBackground ( Color . CYAN );
panel3 . add ( new JLabel ( "Panel3" ));
}
return panel3 ;
}
public CardLayout getCardLayout () {
if ( cardLayout == null ) {
cardLayout = new CardLayout ();
}
return cardLayout ;
}
public JPanel getPanel () {
if ( mainPanel == null ) {
mainPanel = new JPanel ( getCardLayout ());
mainPanel . add ( getPanel1 (), "panel1" );
mainPanel . add ( getPanel2 (), "panel2" );
mainPanel . add ( getPanel3 (), "panel3" );
getCardLayout (). show ( mainPanel , "panel1" );
}
return mainPanel ;
}
public static void main ( String [] args ) {
JFrame frame = new JFrame ();
frame . setContentPane ( new CardLayoutTest ());
frame . setDefaultCloseOperation ( JFrame . EXIT_ON_CLOSE );
frame . setSize ( 500 , 400 );
frame . setVisible ( true );
}
}
joaosavio 12 de fev. de 2008
fzamara 14 de fev. de 2008
Pode fazer tmb com freelayout, so que em vez de setVisible() vc usa o adicionar
eu tenho uma aplicação aonde eu tenho 3 paineis
Painel.add(nomedopainel);
painel.remove(nome do painel);
so lembrando que para adicionar vc tem que remover ai depois de feito é bom chamar o invokeLater
SwingUtilities . invokeLater ( new Runnable () {
public void run () {
nomePainel . repaint (); //vc redesenha o painel.
qualquer duvida é so perguntar?