2012-10-10 2 views
0

내 프로그램은 다음과 같습니다!Java Swing 클래스를 패널에 동적으로로드

enter image description here

는 동적으로 밑 부분이있는 콤보 상자에서 선택한 항목에 따라 하단 프레임에 프레임을로드 할. 예를 들어 첫 번째 항목이 선택되면 PresentValue.java 파일의 패널을 표시합니다. 아이디어는 각각의 자바 파일에서 내가 디자인 한 것을 보여주는 각각의 선택을위한 하나의 자바 파일을 가지고 있다는 것입니다.

enter image description here

이 두 개의 자바 파일

enter image description here

은 콤보 상자의 선택에 따라, 내 첫 번째 스크린 샷에서 "바닥"상자에 넣어해야합니다.

나는 안드로이드 프로그래밍에 더 익숙해졌으며 거기에서 파생 된 조각을 바꾸어로드 된 조각을 바꾸는 간단한 replace 메서드를 호출했습니다. 여기에서 비유를 찾으십시오.

final JComboBox selectorBox = new JComboBox(selection); 
    selectorBox.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      int selectionID = selectorBox.getSelectedIndex(); 

     } 
    }); 

하지만 내가하고 싶은 일을 할 수 없습니다. 설명 해주십시오.

+0

로드 자체에 프레임 .. 설명해은 .. –

+0

, 난 바닥 부분은'PresentValue.java' 무엇 – Killerpixler

+0

상자에 selcted 내용에 따라 동적으로 변경, 편집 필요를 참조하십시오? JPanel의 하위 클래스입니까? – Sednus

답변

4

보유하고있는 각 Java 파일의 Java 파일 출력은 JPanel이어야합니다. JFrame 아닙니다.

아무 것도 표시하기 전에 가지고있는 모든 Java 파일을 실행하십시오. 가능한 모든 JPanel을 만듭니다.

GUI에서 JFrame을 만든 다음 제거 및 추가 방법 JFrame을 사용하여 원하는 JPanel을 제거하거나 추가하십시오.

다음은 내 GUI 중 하나의 예제입니다. 디스플레이 JPanel 알람 JPanel보다 더 크거나 작은 경우

public void updatePartControl() { 
    Thread thread = new CountdownThread(model, this, displayPanel); 
    thread.start(); 

    frame.remove(alarmPanel.getPanel()); 
    frame.add(displayPanel.getPanel()); 
    frame.validate(); 
    frame.pack(); 
    frame.setBounds(getBounds()); 
} 

setBounds 방법은 경계를 재설정합니다.

신청서에는 JFrame이 하나 있어야합니다. 여러 개의 JPanel을 사용하여 GUI를 만들 수 있습니다.

+0

은 내가 필요한 것을 더 명확하게해야하는 약간의 편집을했습니다. 조언을 해주십시오 – Killerpixler

+0

제 답변을 더 명확하게하려고했습니다. –

3

하단 구성 요소를 변경하는 것은 사용중인 레이아웃 관리자에 따라 다릅니다. CardLayout은 패널 교환을 목적으로 설계되었습니다.

public void actionPerformed(ActionEvent arg0) { 
    int selectionID = selectorBox.getSelectedIndex(); 
    if (selectionID == 0) { 
     cardLayout.show(basePanel, SELECTED_1); 
    } 
    // handle other selections 

} 
+0

[예] (http://stackoverflow.com/a/6432291/230513). – trashgod

+0

은 내가 필요한 것을 더 명확하게해야하는 약간의 편집을했다. 제발 조언 해주세요. – Killerpixler