Miré a un ejemplo de código que utiliza este código:¿Cómo mostrar diferentes tarjetas en un CardLayout?
cl.show(cardPanel, "" + (currentCard));
Pero cuando se utiliza show
recibo un mensaje en Eclipse que está obsoleto y me pregunto si hay otra manera de mostrar las diferentes tarjetas en el CardLayout cuando hago clic en los botones? A continuación está el código para mi clase CardLayout. Las sugerencias también son bienvenidas si alguna parte del código es una mala práctica. ¡Gracias!
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class CardLayoutTest extends JFrame implements ActionListener {
// Ref
private JPanel cardPanel, jp1, jp2, buttonPanel;
private JLabel jl1, jl2;
private JButton btn1, btn2;
private CardLayout cardLayout;
// Konstruktor
public CardLayoutTest()
{
setTitle("Test med CardLayout");
setSize(600,400);
cardPanel = new JPanel();
buttonPanel = new JPanel();
cardPanel.setLayout(cardLayout);
jp1 = new JPanel();
jp2 = new JPanel();
jl1 = new JLabel("Card 1");
jl2 = new JLabel("Card 2");
jp1.add(jl1);
jp2.add(jl2);
cardPanel.add(jp1, "1");
cardPanel.add(jp2, "2");
btn1 = new JButton("Show Card 1");
btn2 = new JButton("Show Card 2");
buttonPanel.add(btn1);
buttonPanel.add(btn2);
getContentPane().add(cardPanel, BorderLayout.NORTH);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
btn1.addActionListener(this);
}
public void actionPerformed(ActionEvent event)
{
// ??? Show card 1 ???
// ??? Show card 2 ???
}
public static void main(String[] args) {
CardLayoutTest frame = new CardLayoutTest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
¡Gracias por el nuevo código! ¡Está funcionando bien! Pero tengo algunas preguntas sobre algunas líneas que ha agregado, como esta: private static final serial serialVersionUID = 1L; Puedo ver que eliminé un triángulo de alerta amarilla en Eclipse, pero ¿qué está haciendo? Y también reemplazó esta línea: getContentPane(). Add (cardPanel, BorderLayout.NORTH); con esto: agregue (cardPanel, BorderLayout.NORTH); ¿cual es la diferencia? Y finalmente, ¿podrías ser amable y explicar lo que has hecho en el método principal? ¡Gracias! –