2009-08-22 9 views
0

누군가 JFrame.setvisible이 true로 설정되어있을 때 내 JTabbedPane이 표시하지 않는 클래스에 대해 내가 잘못하고있는 것을 설명 할 수 있습니까?왜이 스윙 탭이 표시되지 않습니까?

예, 프로그램의 주요 방법 (여기서는 설명하지 않음)은 이벤트 발송 스레드를 사용하여 ArionGUI를 시작합니다. 여기

import javax.swing.*; 


public class ArionGUI extends JFrame { 

    public ArionGUI() { 
     // Set up GUI frame for Arion 
     JFrame arionFrame = new JFrame("Arion v 0.01"); 
     // Add Arion Tabbed Pane 
     arionFrame.getContentPane().add(new ArionTabbedPane()); 
     // Terminate the application when closed 
     arionFrame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     // Set the size of the frame 
     arionFrame.setSize(500, 500); 
     // Center window 
     arionFrame.setLocationRelativeTo(null); 
     // Prevent user from resizing window 
     arionFrame.setResizable(false); 
     // Make Arion frame visible on screen 
     arionFrame.setVisible(true);     
    } 
} 

그리고 JTabbedPane에 내 코드입니다 : ArionTabbedPane 실제로 탭 구획이 아니기 때문에

import javax.swing.JTabbedPane; 
import javax.swing.JLabel; 
import javax.swing.JComponent; 

public class ArionTabbedPane extends JComponent { 

    JTabbedPane arionTabbedPane; 

    public ArionTabbedPane() { 

     arionTabbedPane = new JTabbedPane(JTabbedPane.TOP); 
     arionTabbedPane.addTab("Characters", new JLabel("This is the characterz tab")); 
     arionTabbedPane.addTab("Miscellaneous", new JLabel("This is the miscellaneous tab")); 
     add(arionTabbedPane); 

    } 

} 

답변

3

다음은 JFrame의 내 코드입니다. 그것은 하나의 래퍼입니다. 따라서 TabbedPane이 아닌 JFrame에 컴포넌트를 추가하는 것입니다. ArionTabbed 구획을 JFrame에 추가하려면 JTabbedPane을 확장해야합니다. 래핑하는 창을 추가하려면 내부 탭 창에 대한 참조를 반환하는 함수가 필요하며이 탭을 JFrame에 추가해야합니다. 이런 식으로 뭔가가 :

Public JTabbedPane getPane() { 
return arionTabbedPane; 
} 

편집 : 흠 .. 당신이 그 mioght 작업을 할 수있는 다른 것은 당신이 원하지 않는 경우

ArionTabbedPane.getPane()이 같은
ArionTabbedPane tabbedPane = new ArionTabbedPane(); 
arionFrame.getContentPane().add(tabbedPane.getPane()); 

인 경우 그 중 하나를 수행하려면 ArionTabbedPane이 JComponent 대신 JPanel을 확장해야합니다. Java는 JPanel이 컨테이너라는 것을 알고 있으므로 JFrame에 JPanel을 추가 할 때 JPanel에서 표시 할 항목을 확인해야합니다. ArionTabbedPane이 JComponent 대신 JPanel을 확장하게하는 경우에만 변경해야합니다.

다시 편집하십시오. JTabbedPane을 확장하면 내부 JTabbedPane을 제거해야합니다. 새로운 ArionTabbedPane은 다음과 비슷한 모습이 될 것

공용 클래스 ArionTabbedPane는 JTabbedPane에 {

public ArionTabbedPane() { 
    super(JTabbedPane.TOP); // Calls JTabbedPane's constructor. 
    this.addTab("Characters", new JLabel("This is the characterz tab")); 
    this.addTab("Miscellaneous", new JLabel("This is the miscellaneous tab")); 
} 

} 정말

훨씬 간단을 확장합니다.

+0

한 문제를 보려면 ... 잘 했어 – OscarRyz

+0

주셔서 감사합니다. 초기 응답 ArionTabbedPane은 JTabbedPane의 작동을 확장해야합니다! 그게 내가 원하는 전부 야. – elwynn

+0

그러나 JTabbedPane을 확장하려면 내부 JTabbedPane을 제거해야합니다. 더 이상 사용하지 않을 것입니다. 당신은 새로운 수업을 듣고 내가 지금 갈 것이고 답을 편집 할 것입니다. –

관련 문제