2016-06-22 4 views
0

내 프레임에는 2 개의 패널이 있고 1 개는 버튼입니다 (radioButton을 사용하고 싶지만 버튼을 사용하면 더 쉽습니다). 다른 하나는 카드 레이아웃 패널 용입니다. 내 계획은 특정 버튼을 누르면 채드를 섞는 것이다. 이동 버튼처럼 이동 패널 카드가 표시됩니다. 이동 패널 카드에는 x0 레이블과 텍스트 필드가 있지만 라인 패널 카드에는 레이블과 텍스트 필드 모두 x0과 x1이 있습니다.카드 레이아웃에서 카드를 바꿀 수있는 버튼

2 종류가 있습니다, 1, 다른 하나는 카드를 인 buttonpanel을 위해 = 버튼 입니다 = PanelMiddle 여기 내 코드입니다 :

public class PanelMiddle{ 
    JPanel controlPanel = new JPanel(); 
    CardLayout cl = new CardLayout(); 

    JPanel movePanel = new JPanel(); 
    JPanel linePanel = new JPanel(); 

    JLabel x0Label = new JLabel("x0"); 
    JTextField x0TextField = new JTextField(3); 
    JLabel x1Label = new JLabel("x1"); 
    JTextField x1TextField = new JTextField(3); 

    public PanelMiddle(){ 
     controlPanel.setLayout(cl); 

     //move panel 
     movePanel.setLayout(new GridLayout (1,2)); 
     movePanel.add(x0Label); 
     movePanel.add(x0TextField); 
     controlPanel.add(movePanel,"Move"); //add the keyword Move to show the move card 

     //line panel 
     linePanel.setLayout(new GridLayout (2,2)); 
     //linePanel.add(x0Label); 
     linePanel.add(x1Label); 
     //linePanel.add(x0TextField); 
     linePanel.add(x1TextField); 
     controlPanel.add(linePanel,"Line"); // add the keyword Line to show the line card 

     } 
    } 

다른 클래스에서 내가 가진 :

public class Buttons extends PanelMiddle{ 
    JPanel buttonPanel = new JPanel(); 

    JButton moveB = new JButton ("Move"); 
    JButton lineB = new JButton ("Line"); 

    public Buttons(){ 
    buttonPanel.setLayout(new GridLayout (2,1)); 
    buttonPanel.add(moveB); 
    buttonPanel.add(lineB); 

    action(); 
    } 

    public void action(){ 
    moveB.addActionListener((e) -> { 
    cl.show(controlPanel,"Move"); 
    }); 

    lineB.addActionListener((e) -> { cl.show(controlPanel,"Line");}); 
    } 
    } 

결과가 이상합니다. 그것은 내 패널을 완전히 보여주지는 않습니다. 그러나 모든 라인 패널에 주석을 달았을 때 작동합니다. 누군가 여기에 문제가 있습니까?

NB : 임 죄송합니다. 여기 텍스트를 편집하는 방법을 모르므로 약간 지저분합니다.

편집 1 : guleryuz 말한대로, 나는 컴포넌트는, 당신은 x0Label 및 x0TextField이 두 패널을 추가하는 하나 개의 컨테이너에 추가 할 수있는 스윙 구성 요소 계층 구조의 라인 패널

답변

1

에서 x0Labelx0TextField에서 댓글을 달았습니다. 그래서 x0Labe 2 초 패널 (linePanel)을 추가하면 movePanel (x0TextField의 경우와 동일)에서 제거되어 movePanel이 비게됩니다.

자세한 내용 here

+0

Ah! 괜찮아! 그게 하나의 문제지만, 그것은 여전히 ​​내 버튼 패널을 변경 못해 해결하지 못했습니다. –