我有2个类,mainFrame和panel。通过单击mainFrame上的按钮我从另一个类调用面板并将其设置在JFrame(mainFrame类)中的选项卡式窗格中。现在,我在面板类的面板上有另一个按钮(btnRemove)。因此,当我单击该按钮时,我想从mainFrame类中的选项卡式窗格中删除我的面板。我该如何正确地写出我的听众?
mainFrame类:
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){
}
});
}
}
答案 0 :(得分:2)
panel.this.getParent().remove(panel.this);
如果您希望代码保持工作,即使您将按钮嵌套在子面板中,也应该使用以下内容:
SwingUtilities.getAncestorOfClass(JTabbedPane.class, panel.this).remove(panel.this);
附注:请尊重Java命名约定:类以大写字母开头。