2015-01-22 1 views
1

JFrame의에 CardLayout을 사용하는 JPanel을 추가하려고 , 각 정렬 알고리즘에 대해 하나씩 구현해야합니다. 버튼을 클릭하면 배열의 그래픽 표현이 정렬 된 새 패널로 이동합니다 (이미 작은 애플릿에서이 작업을 수행했습니다).나는 당신이 볼 수있는 첫 번째 화면은 4 개 버튼을 포함하는 애플릿을 만들려고 노력하고</p> <p>빈 프레임을 얻을 실행할 때, 내가 실수를 발견 할 수

여기 내 코드는 다음과 같습니다.

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.*; 

public class newCLayoutTest extends JPanel{ 

    private JPanel holderPanel, mainPanel, bubblePanel, selectionPanel, mergePanel, quickPanel; 
    private JButton bubbleButton, selectionButton, mergeButton, quickButton; 

    private CardLayout cardLayout = new CardLayout(); 

    public newCLayoutTest() 
    { 
     JLabel label = new JLabel("Label"); 
     holderPanel = new JPanel(); 
     mainPanel = new JPanel(); 
     bubblePanel = new JPanel(); 
     selectionPanel = new JPanel(); 
     mergePanel = new JPanel(); 
     quickPanel = new JPanel(); 

     holderPanel.setLayout(cardLayout); 

     bubbleButton = new JButton(); 
     selectionButton = new JButton(); 
     mergeButton = new JButton(); 
     quickButton = new JButton(); 

     //mainPanel.setLayout(new GridLayout(2,2)); 
     mainPanel.add(bubbleButton); 
     mainPanel.add(selectionButton); 
     mainPanel.add(mergeButton); 
     mainPanel.add(quickButton); 

     bubblePanel.add(label); 

     holderPanel.add(mainPanel, "1"); 
     holderPanel.add(bubblePanel, "2"); 

     cardLayout.show(holderPanel,"2"); 




    } 

} 

그리고 cont 롤러 클래스 :

import java.awt.BorderLayout; 

import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

public class testControl extends JFrame{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public static void main(String[] args){ 
     SwingUtilities.invokeLater(new Runnable() { 


     public void run() { 

      newCLayoutTest panel = new newCLayoutTest(); 
      JFrame frame = new JFrame("LET THIS WORK"); 

     // frame.setLayout(new BorderLayout()); 

      frame.add(panel); 
      //frame.getContentPane().add(panel); 

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

      frame.setSize(600, 400); 
      frame.setVisible(true); 
     } 
    }); 
} 
} 

답변

2

holderPanel 었소는 구성 요소, 즉 newCLayoutTest

add(holderPanel); 

참고 패널에 새로운 기능을 추가하지 않는로 JPanel를 서브 클래 싱 할 필요가 없습니다를 포함하는 패널에 추가되었습니다. 패널을 만들고 구성 요소를 추가하기 만하면됩니다. 또한 Java 이름 지정 규칙에 따라 클래스 이름에 대문자의 첫 글자를 사용합니다 (예 : NewCLayoutTest

+0

예! 그게 효과가! add (holderPanel); 배치되다? – MichaelStoddart

+0

패널이 인스턴스화 된 후에 나타나는 한 실제로는 없습니다. – Reimeus

관련 문제