Java 从另一个类控制另一个类

Java 从另一个类控制另一个类,java,swing,panels,Java,Swing,Panels,我在挥杆方面有点问题。我有一个名为FrameMain的JFrame。它里面有一个名为panelChoices的JPanel 当调用/创建FrameMain时,它用大量PanelEntries对象填充panelChoices对象,这是一个JPanel,其中包含大量JButtons(这是我编写的另一个类) 我想做的是,当我单击PanelEntries对象内的一个按钮时,我想销毁/删除FrameMain,以及其他it组件(包括包含JButton的PanelEntries对象) 我尝试使用super,但

我在挥杆方面有点问题。我有一个名为
FrameMain
JFrame
。它里面有一个名为
panelChoices
JPanel

当调用/创建
FrameMain
时,它用大量
PanelEntries
对象填充
panelChoices
对象,这是一个
JPanel
,其中包含大量
JButton
s(这是我编写的另一个类)

我想做的是,当我单击
PanelEntries
对象内的一个按钮时,我想销毁/删除
FrameMain
,以及其他it组件(包括包含
JButton
PanelEntries
对象)

我尝试使用
super
,但它返回保存
JButton
JPanel
PanelEntries
对象),而不是保存所有按钮的
FrameMain
。我怎样才能做到这一点

编辑:我似乎不够清楚,所以这里有我工作中的更多信息。我现在没有实际的代码,因为我在另一台机器上,但我希望这将有助于详细阐述我的问题

public class FrameMain() {
    private JFrame frameMain;
    private JPanel panelChoices;

    public FrameMain(args) {
        createGUI();
        loadData();
    }

    private void createGUI() {
        JFrame frameMain = new JFrame();
        JPanel panelChoices = new JPanel(new GridLayout(1,1));
        frameMain.add(panel);
        // removed formatting and other design codes since they are not important.
        pack();
    }

    private void loadData() {
        boolean available;
        for (int i = 1; i <= 10; i++) {
            // do some if/else and give value to boolean available
            PanelEntries panel = new PanelEntries(i, available);
            frameMain.add(panel);
            // more code here to handle data.
        }
    }
}

public class PanelEntries() extends JPanel {

    public PanelEntries(int num, boolean avb) {
        JButton button = new JButton("Button Number " + num);
        button.setEnabled(avb);
        add(button);
        // add action listener to created button so that it calls 'nextScreen()' when clicked.
        // more code
        pack();
    }

    private void nextScreen() {
        // destroy/dispose MainFrame here.
        // See Notes.
        AnotherFrame anotherFrame = new AnotherFrame();
    }
}
public类FrameMain(){
私有JFrame frameMain;
私人JPanel panelChoices;
公共FrameMain(args){
createGUI();
loadData();
}
私有void createGUI(){
JFrame frameMain=新JFrame();
JPanel panelChoices=新JPanel(新网格布局(1,1));
frameMain.add(面板);
//删除了格式和其他设计代码,因为它们并不重要。
包装();
}
私有void loadData(){
布尔值可用;

对于(int i=1;i根据给定信息

  • 如果您想退出应用程序,这没什么大不了的。请使用
    System.exit(0);
    :)

  • 如果要处理该帧,
    jframe.dispose();

  • 如果要删除组件/所有组件,可以使用
    .remove(Component)
    /
    .removeAll()


  • 如果这没有帮助,请用更多信息重新编写您的问题。

    请提供您的代码摘录。我认为这比一堵墙更容易理解。听起来您正试图“退出”应用程序。这是正确的吗?
    JPanel
    中的
    super
    返回什么?它返回
    Fra吗meMain
    super.dothis()
    JPanel
    中运行
    dothis()
    。然后
    super.dothis())
    Jpanel
    中的
    应该会给你你所需要的。@fyr:我已经编辑了这个问题。我希望现在问题清楚了。@JacoVanNiekerk不,我只需要从
    面板条目
    对象中处理
    FrameMain
    对象。