2016-06-12 1 views
0

카드 레이아웃이있는 방법을 통해 하나의 패널이 추가됩니다. 그리고 다른 하나는 객체를 통해 메소드에 전달됩니다. 문제는 카드 레이아웃의 패널이 패널 "2"대신 패널 "1"을 표시한다는 것입니다. 패널 "2"가 메소드에 전달조차되지 않는 것과 같습니다. 나는 내가 할 수있는만큼 많은 코드를 단순화하기 위해 노력카드 레이아웃이 잘못된 패널을 표시합니다.

오류가 ....이 없습니다 :

일등석 :

 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"); 
     } 
} 

2 등석 :

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

    public meni(){ 

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

     nova.addPanel2(SECOND); 
    } 
} 

Main 클래스 :

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); 
    } 
} 

답변

1

두 번째 JPanel을 추가하고 있지만 게임 개체에 추가하고 있습니다. Game 객체는 현재 프로그램 시작시에 표시되며 두 번째 클래스에서는 완전하고 새롭고 독특한 Game 객체를 만들고 두 번째 JPanel을 추가하므로 시각화 된 객체에 표시되지 않습니다.

해결 방법 : 두 번째 클래스에 새 Game 개체를 만들지 말고 시각화 된 Game 개체에 대한 유효한 참조가 있는지 확인하십시오. 이는 생성자 매개 변수 또는 setter 메서드 매개 변수를 통해 수행 할 수 있습니다.

+0

알겠습니다. 매우 감사합니다! – quadrar

0

노바 .addPanel2 (SECOND); 이 코드에서 무엇을 의미합니까 ?? 프레임에 패널을 추가하려면 JPanel.add (패널 객체)와 같은 메소드가 있어야합니다.

+0

패널을 SECOND를 패널에 추가하는 중 addPanel2 (first class)에 패널 SECOND를 전달 중입니다. MAIN – quadrar

관련 문제