2016-04-27 15 views
1

Es gibt 2 JPanels in meinem Code. Der erste ist Furutsu7, der Haupt-JPanel, der mein Spiel beinhaltet. Der zweite JPanel ist der Start-Jbutton. Was ich versuche zu erreichen ist, nachdem der Benutzer auf den Jbutton geklickt hat, wird das Furutsu7 JPanel erscheinen.Ändern der JPanels nach dem Klicken auf Jbutton

Dies ist meine Setup-Klasse, in der ich die Schaltflächen erstellt habe.

public void setup(){ 
    JFrame f = new JFrame("Start "); 
    JPanel card1 = new JPanel(); 
    JPanel card2 = new JPanel(); 


    cards = new JPanel(new CardLayout()); 

    JButton Card1Button = new JButton("Start"); 
    card1.add(Card1Button); 
    JButton Card2Button = new JButton("Exit"); 
    card2.add(Card2Button); 

    cards.add(card1, "C1"); 
    cards.add(card2, "C2"); 

    f.add(cards, BorderLayout.CENTER); 

    f.setTitle("Furutsu"); 
    f.setSize(500, 300); 
    f.setLocationRelativeTo(null); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 



} 

Was ich helfen zu müssen, ist, was sollte ich in meiner Tat umgesetzt durchgeführt, um die Furutsu JPanel zu wechseln.

+0

crosshostered: http: //www.codeeranch.c om/t/664974/GUI/java/Ändern der Panel-Klick-JButton – camickr

Antwort

5

Machen Sie Ihr CardLayout zu einem Feld der Klasse, damit Sie es mit Ihrer actionPerformed-Methode leichter erreichen können. Andernfalls müssten Sie (CardLayout) cards.getLayout() anrufen, eine riskantere Sache zu tun. Zum Beispiel:

public class MyClass implements ActionListener { 
    private CardLayout cardLayout = new CardLayout(); 
    private JPanel cards = new JPanel(cardLayout); 

    public void setup(){ 
     JFrame f = new JFrame("Start "); 
     JPanel card1 = new JPanel(); 
     JPanel card2 = new JPanel(); 

     // cards = new JPanel(new CardLayout()); 

     JButton Card1Button = new JButton("Start"); 
     card1.add(Card1Button); 
     JButton Card2Button = new JButton("Exit"); 
     card2.add(Card2Button); 

     cards.add(card1, "C1"); 
     cards.add(card2, "C2"); 

     f.add(cards, BorderLayout.CENTER); 

     f.setTitle("Furutsu"); 
     f.setSize(500, 300); 
     f.setLocationRelativeTo(null); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setVisible(true); 
    } 

Dann können Sie direkt darauf verweisen:

@Override 
public void actionPerformed(ActionEvent e) { 
    // now you can call methods on your cardLayout variable: 
    cardLayout.show(...); // I'll leave it to you to figure out what to put in here 
} 

Weitere Informationen über Cardlayout, lesen Sie bitte seine tutorial

Beachten Sie, wenn Sie wollen einfach nur Komponenten in vorwärts tauschen oder rückwärts Reihenfolge, schauen Sie sich die anderen Methoden von CardLayout, wie next(cards) und previous(cards)