2013-02-11 14 views
16

Cześć, przepraszam, jeśli już zostały opublikowane, ale wyglądałem ciężko i znalazłem inne kody, których nie mogłem dobrze zrozumieć. Jestem początkującym programistą java i chciałbym, aby ktoś wskazał mi właściwy kierunek, w jaki sposób mogłem zmienić pożądane panele, naciskając przycisk. każda pomoc będzie bardzo ceniona. Po prostu próbuję w pełni zrozumieć, jak działa ta koncepcja.Zmiana paneli za pomocą układu karty

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; // Packages used in this program imported  

public class onlineGame extends JFrame implements ActionListener 
{ 

    JPanel cards; 
    JButton button1, button2, button3; 

    public onlineGame() //This is the CONSTRUCTOR method 
    { 
     //The entry point into your program 
     setLayout(new FlowLayout()); //Use this for now. 
     setSize(810, 510); //Set the size of the JFrame 
     setTitle("Generic Card Game"); //Put Title on top of JFrame 
     setBackground(Color.yellow); 
     setResizable(false); 

     button1 = new JButton("THIS IS BUTTON 1"); 
     button2 = new JButton("THIS IS BUTTON 2"); 
     button3 = new JButton("THIS IS BUTTON 3"); 

     button1.addActionListener(this); 
     button2.addActionListener(this); 
     button3.addActionListener(this);  

     //Create the cards 

     JPanel card1 = new JPanel(); 
     card1.add(button1); 

     JPanel card2 = new JPanel(); 
     card2.add(button2); 

     JPanel card3 = new JPanel(); 
     card3.add(button3); 

     //Create the panel that contains the "cards". 

     cards = new JPanel(new CardLayout()); 

     cards.add(card1); 
     cards.add(card2); 
     cards.add(card3); 

     getContentPane().add(cards); 
     setVisible(true); //Make JFrame visible 
    } 

    public void actionPerformed(ActionEvent e) 
    {  
     if (e.getSource() == button1){  
      //What do i put here to change to Panel card2 or card3 and so on. 
     } 
    } 
    public static void main(String args[]) 
    {  
     new onlineGame(); // This calls the constructor and runs it  
    } 
} 
+0

(Dla przyszłych użytkowników) Przycisk [dokumentacja Oracle dla CardLayout] (https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) jest dość łatwa do zrozumienia. – RustyTheBoyRobot

+0

Absolutnie nie ma powodu, aby to zamykać. W żadnym razie nie jest to wąskie pytanie. Jest tak szeroki, jak pytania. – Gary

Odpowiedz

24

Aby przejść do dowolnego panelu upewnij się, aby określić ograniczenia podczas dodawania składników kartka:

cards.add(card1, "Card 1"); 
cards.add(card2, "Card 2"); 
cards.add(card3, "Card 3"); 

następnie Flip do innego komponentu:

CardLayout cardLayout = (CardLayout) cards.getLayout(); 
cardLayout.show(cards, "Card 2"); 

Aby nawigować do następny komponent, możesz użyć:

cardLayout.next(cards); 

Czytaj: CardLayout

+0

Dziękuję. Czy mogę określić, który panel chciałbym zmienić zamiast zmienić na następny? –

+0

@aboadam Tak. Reimeus pokazał ci dokładnie, jak to osiągnąć. Zamiast używać 'next', wyświetliłbyś' CardLayout # show (Container, String) ' – MadProgrammer

+0

Dziękuję bardzo! : D –

Powiązane problemy