2014-04-11 5 views
1

기본적으로 내가하고 싶은 일은 불빛 게임 (숙제)을위한 두 줄의 버튼을 그렸지만 두 패널을 모두 표시하는 방법을 모르겠습니다. 전에 거의 그래픽이 거의 없었고, 내가하는 일을 정말로 이해하지 못합니다. 패널 그들 자아가 작동하지만 그냥 내가 두 번째 추가 중 보여줍니다 당신은이 패널 A와 B를 만든 다음 다른 패널 C.에 추가해야자바 스윙 복수 jpanels

public static void main(String[] args) { 
    String nButtonsString = JOptionPane.showInputDialog("How many buttons would you like?"); 
    int nButtons = Integer.parseInt(nButtonsString); 
    JFrame myFrame = new JFrame(); 

    myFrame.setTitle("Linear Lights Out Game."); 
    myFrame.setSize(FRAME_SIZE);  


    JPanel control_buttons = new Linear_Controls(); 
    myFrame.add(control_buttons); 

    JPanel lights = new LinearLightsPanel(nButtons); 
    myFrame.add(lights); 

    myFrame.pack(); 
    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    myFrame.setVisible(true); 
+0

중복 될 수 있습니까? http://stackoverflow.com/questions/4186835/how-to-add-multiple-components-to-a-jframe – Ordous

+0

요청과 관련된 코드는 다음에서 찾을 수 있습니다. http : //www.java2s.com/Code /Java/Swing-Components/TabColorExample.htm –

답변

2
myFrame.add(control_buttons); 
myFrame.add(lights); 

합니다. 또한 기본적으로 BorderLayout의 CENTER에 구성 요소가 추가됩니다. 그러나 CENTER에는 단일 구성 요소 만 포함될 수 있으므로 추가 된 마지막 구성 요소 만 표시됩니다. 시도 :

myFrame.add(control_buttons, BorderLayout.NORTH); 

이제 두 구성 요소가 표시됩니다.

자세한 내용과 예제는 Using Layout Managers의 스윙 튜토리얼 섹션을 참조하십시오. 또한 기본 스윙 사용에 대한 다른 유용한 항목을 보려면 Trail/Table of Contents 링크를 살펴보십시오.

+0

사용자 정의 클래스에 BoarderLayout을 구현하려면 어떻게해야합니까? Do는 필드에 줄 레이아웃 객체를 저장하고 Java가 나머지 작업을 수행하도록 하시겠습니까? – icaughtfireonce

+0

@icaughtfireonce, 나는 당신이 무엇을 요구하고 있는지 전혀 모른다. 작업 예제 및 자세한 설명은 자습서를 참조하십시오. – camickr

+0

신경 쓰지 마라. 나는 그걸 가지고 놀았고, 나는 내 생성자에 하숙인 레이아웃을 포함시킬 필요가 없다고 생각한다. 고마워요. – icaughtfireonce

0

(나는 이전 패널을 덮어있어 가정) 프레임에 C를 추가합니다. 더 나은

비트 설명 :

JPanel lights = new LinearLightsPanel(nButtons); 
myFrame.add(lights); 

하지만이 같은 싶습니다 : 이것은 당신이 지금 무엇을하는 JFrame의이 BorderLayout를 사용 기본적으로

JPanel lightsA = new LinearLightsPanel(nButtonsA); 
JPanel lightsB = new LinearLightsPanel(nButtonsB); 

JPanel lightsC = new JPanel(); 
lightsC.add(lightsA); 
lightsC.add(lightsB); 

myFrame.add(lightsC);