2012-06-22 3 views
0

mainFrame 및 panel 클래스가 두 개 있습니다. mainFrame의 버튼을 클릭하여 다른 클래스의 패널을 호출하고 JFrame (mainFrame 클래스)에있는 탭 패널에 설정합니다. 이제 패널 클래스에서 내 패널에 다른 버튼 (btnRemove)이 있습니다. 따라서 해당 버튼을 클릭하면 mainFrame 클래스의 탭 패널에서 내 패널을 제거하려고합니다. 청취자를 올바르게 쓰려면 어떻게해야합니까?패널의 버튼을 통해 JTabbedPane에서 패널 제거

메인 프레임 클래스 :

import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 
public class MainFrame extends JFrame { 
JTabbedPane tPane = new JTabbedPane(); 
JButton btn = new JButton("Add panel"); 
public MainFrame(){ 
    setSize(400,300); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 
    setLayout(new BorderLayout()); 
    add(tPane, BorderLayout.CENTER); 
    add(btn,BorderLayout.NORTH); 
    btn.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      panel p = new panel(); 
      tPane.add("Panel",p); 
     } 
    }); 
} 

public static void main(String[] args){ 
    new MainFrame(); 
} 
} 

패널 클래스 :

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
public class Panel extends JPanel{ 
JButton btnRemove = new JButton("Remove panel"); 

public Panel(){ 
    setLayout(new FlowLayout()); 
    add(btnRemove); 
    btnRemove.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 

     } 
    }); 

} 
} 
+1

패널 또는 전체 탭을 제거 하시겠습니까? BTW - 1)'JFrame' 또는'JPanel'을 확장하지 말고 - 대신 프레임 인스턴스와'JPanel'을 생성하는 메소드를 갖습니다. 2)'setSize()'를 호출하지 않습니다. 3)'JFrame.DISPOSE_ON_CLOSE' 4) 컴포넌트가 추가되고'pack()'이 호출 될 때까지는'setVisible (true)'를 호출하지 마십시오. 5) EDT에서 GUI를 작성하고 변경해야합니다. 6) 클래스에 대한 공통적 인 [Java 명명 규칙 (Java 命名 規則)] (http://java.sun.com/docs/books/books/books/jls/second_edition/html/names.doc.html#73307) (특히 이름에 사용 된 사례)을 배우십시오. , 메소드 및 속성 이름 및 일관되게 사용하십시오. –

답변

2
panel.this.getParent().remove(panel.this); 

당신은 당신이 둥지 하위 패널 내부의 버튼을, 사용한다해도 작업을 계속하기 위해 코드를 원하는 경우 다음 :

SwingUtilities.getAncestorOfClass(JTabbedPane.class, panel.this).remove(panel.this); 

사이드 노트 : Java 명명 규칙을 존중 해주십시오 : 클래스는 대문자로 시작됩니다.

+0

기준을 위반하여 죄송합니다. 그리고 대답 해줘서 고마워. –

+0

@ brano88 : 표준은 코드를보다 읽기 쉽게 만들어 비판적으로 쉽게 검토 할 수있게합니다. – trashgod

+3

+1하지만 스톤 디지를 피하려면 [SwingUtilities] (http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html)를 살펴보십시오. – mKorbel

관련 문제