2016-06-12 12 views
0

Ein Bedienfeld wird durch die Methode hinzugefügt, in der sich das Kartenlayout befindet. Und eine andere wird durch das Objekt an eine Methode übergeben. Das Problem ist, dass das Panel eines Kartenlayouts Panel "1" anstelle von Panel "2" zeigt, wie Panel "2" nicht einmal zu einer Methode übergeht. Es gibt keine Fehler ....Kartenlayout mit falschem Bedienfeld

Ich habe versucht, den Code zu vereinfachen, so viel wie ich kann:

Erste Klasse:

 public class Game extends JFrame { 
      private CardLayout cl; 
      private JPanel MAIN; 
      private JPanel FIRST; 

      public Game(){ 

      FIRST = new JPanel(); 
      FIRST.setLayout(new BorderLayout()); 

      cl = new CardLayout(); 
      MAIN = new JPanel(); 

      MAIN.setLayout(cl); 

     } 
      public void Show(){ 

      MAIN.add(FIRST, "1"); 
      cl.show(MAIN, "2"); 
      add(MAIN); 
     } 


      public void addPanel2(JPanel panel){ 
      MAIN.add(panel, "2"); 
     } 
} 

Zweite Klasse:

public class meni { 
    private JPanel SECOND; 
    Game nova = new Game(); 

    public meni(){ 

     SECOND = new JPanel(); 
     SECOND.setLayout(new GridBagLayout()); 

     nova.addPanel2(SECOND); 
    } 
} 

Hauptklasse:

public static void main(String[] args){ 

     Game ticFrame = new Game(); 
     meni luk = new meni(); 

     ticFrame.show(); 

     ticFrame.setTitle("Hey"); 
     ticFrame.setSize(600,600); 
     ticFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     ticFrame.setLocationRelativeTo(null); 
     ticFrame.setVisible(true); 
    } 
} 

Antwort

1

Sie fügen Ihr zweites JPanel gut hinzu, aber Sie fügen es dem falschen Game-Objekt hinzu. Ein Game-Objekt ist derzeit beim Programmstart sichtbar und innerhalb dieser zweiten Klasse erstellen Sie ein völlig neues und einzigartiges Game-Objekt und fügen Ihr zweites JPanel hinzu, so dass es sinnvoll erscheint, dass es im visualisierten Objekt nicht angezeigt wird.

Lösung: Erstellen Sie kein neues Game-Objekt in der zweiten Klasse, sondern stellen Sie sicher, dass die zweite Klasse einen gültigen Verweis auf das visualisierte Game-Objekt hat. Dies kann über einen Konstruktorparameter oder einen Setter-Methodenparameter erfolgen.

+0

hinzufügt. Vielen Dank! – quadrar

0

nova .addPanel2 (zweite); Was meinst du mit diesem Code ?? Um Panel zu Frame hinzuzufügen, haben wir Methoden wie JPanel.add (Ihr Panel-Objekt).

+0

Ich übergebe das Panel SECOND an die Methode addPanel2 (in der ersten Klasse), die das Panel SECOND zum Panel MAIN – quadrar

Verwandte Themen