2012-12-16 3 views
1

자바 스윙을 사용하여 GUI를 만들려고합니다. 자바 스윙의 초보자입니다. 내 기본 아이디어는 두 개의 탭을 만들고 탭 중 하나에 버튼을 추가하는 것이 었습니다.자바의 자바 탭 패널에 버튼 컴포넌트 추가

각 탭마다 별도의 클래스를 작성하여 하나의 기본 메소드가있는 3 개의 클래스를 만들고 나머지 두 개는 탭을 나타냅니다.

탭 중 하나에서 중간에 단추를 추가하고 해당 단추에 동작 수신기를 추가하려고했습니다.

아래는 main 메소드가있는 클래스입니다.

public class abc { 
    JFrame frame; 
    JTabbedPane tabPane; 
    ImageIcon close; 
    Dimension size; 
    int tabCounter = 0; 
    abc_export exp; 
    abc_import imp; 
    public static void main(String[] args) { 
     abc jtab = new abc(); 
     jtab.start(); 
    } 
    public void start(){ 
    exp=new abc_export(); 
    imp=new abc_import(); 
    tabPane.addTab(null, exp.panel); 
    tabPane.addTab(null, imp.panel); 
    tabPane.setTabComponentAt(tabPane.getTabCount()-1, exp.tab); 
    tabPane.setTabComponentAt(tabPane.getTabCount()-1, imp.tab); 
    } 

    public abc() { 
     // Create a frame 
     frame = new JFrame(); 
     // Create the tabbed pane. 
     tabPane = new JTabbedPane(); 
     // Create a button to add a tab 
     // Create an image icon to use as a close button 
     close = new ImageIcon("C:/JAVAJAZZUP/tabClose.gif"); 
     size = new Dimension(close.getIconWidth()+1, close.getIconHeight()+1); 
     //Adding into frame 
     frame.add(tabPane, BorderLayout.CENTER); 
     frame.setSize(300, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
     } 

}; 

아래는 탭 중 하나의 코드입니다. 다른 탭에도 다른 클래스 이름이있는 다른 탭을 나타내는 코드가 있습니다.

public class abc_import { 
    ImageIcon close; 
    Dimension size; 
    int tabCounter = 0; 
    JPanel tab; 
    final JPanel panel; 
    public abc_import() { 
     close = new ImageIcon("C:/JAVAJAZZUP/tabClose.gif"); 
     size = new Dimension(close.getIconWidth()+1, close.getIconHeight()+1); 
     //Adding into frame 
     JLabel label = null; 
     panel = new JPanel(); 
     // Create a panel to represent the tab 
     tab = new JPanel(); 
     tab.setOpaque(false); 
     String str = "abc_import"; 
     label = new JLabel(str); 
     tab.add(label, BorderLayout.WEST); 
     } 
}; 

예상대로 두 탭이 생성됩니다. 그러나 탭 중 하나에 단추를 추가하는 것에 대한 아이디어가 없습니다.

이제 내 질문은 내가 이미 말한 것처럼 탭 중 하나에 버튼을 추가하려는 경우입니다.해야 할 일은 무엇입니까? 누구도 도와 줄 수 있습니까?

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

버튼 중 하나에 버튼 구성 요소를 추가하려고합니다. – Vijay

+0

@ sarathi : 아래에 나와있는 답변 중 하나라도 해당되면 답변을 수락하여 다른 사용자에게 도움이되도록하십시오. –

답변

3

나는 당신의 의도를 잘 모르지만, 에서 논의 된 TabComponentsDemo에 나와있는 방법을 시도해 볼 수 있습니다. 관련 예시는 here으로 나타내었다.

+0

은 하나의 탭에 간단한 텍스트 상자를 추가하고 다른 탭에 버튼을 추가하려고한다고 가정합니다. – Vijay

+0

탭 자체에 너무 많은 내용을 넣으려고 조심해야하지만 탭마다 다른 구성 요소가있을 수 있습니다. – trashgod

2

setTabComponentAt 메서드를 사용하여 시도해 볼 수 있습니다.

이 methd에는 매개 변수 setTabComponentAt(int index, Component component)이 있습니다. 여기서는 원하는 구성 요소 만 언급합니다.

링크 here을 참조 할 수 있습니다.

+1

+1이 예제는 ['TabComponentsDemo'] (http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html#eg)를 보완합니다. – trashgod

관련 문제