Comment afficher des cartes différentes, dans un CardLayout?
J'ai regardé un exemple de code qui ont utilisé ce code:
cl.show(cardPanel, "" + (currentCard));
Mais quand j'utilise show
je reçois un message dans Eclipse que c'est déconseillé et je me demande si il y a une autre façon de montrer les différentes cartes dans le CardLayout quand je clique sur les boutons? Ci-dessous le code de mon CardLayout classe. Des Suggestions sont également les bienvenues si certaines parties du code sont de mauvaises pratiques. Merci!
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);
}
}
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas voir que Java7 show(Conteneur parent, String nom) ou Java6 show(Conteneur parent, String nom) est amorti
dépend si
currentCard
retourneString
decl.show(cardPanel, "" + (currentCard));
MODIFIER (j'ai essayé votre code exemple)
1.vous avez oublié d'initialiser le plus important de la variable
2.puis SSCCE pourrait être
Il est plus que probable que vous appelez show() sur le Composite, plutôt que de le CardLayout.
La méthode show() utilisé pour exister dans un Composite (plus précisément), et a été remplacé par setVisible(). C'est complètement différent de la méthode show() de CardLayout.
Assurez-vous de faire quelque chose comme ce qui suit dans votre action de l'auditeur
Comme une note de côté, il n'apparaît pas que vous êtes "newing" votre CardLayout. Assurez-vous de le faire.