我对Swing有点问题。我有一个称为JFrame
的FrameMain
。它的内部是一个称为JPanel
的panelChoices
。
调用/创建FrameMain
时,它将用许多panelChoices
对象填充PanelEntries
对象,这是其中包含许多JPanel
的JButton
(这是我编写的另一类)。
我想要做的是,当我单击PanelEntries
对象内的按钮之一时,我想销毁/删除FrameMain
以及其他组件(包括包含PanelEntries
的JButton
对象)。
我试过使用super
,但它返回的JPanel
(即PanelEntries
对象)保存了JButton
,而不是将它们全部保存在一起的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();
}
}
笔记:
.java
文件中。 FrameMain
对象内部的按钮处理PanelEntries
,而不仅仅是处理JFrame。 最佳答案
根据给定的信息,
System.exit(0);
:) jframe.dispose();
.remove(Component)
/ .removeAll()
等如果这样做没有帮助,请使用更多信息重新编写您的问题。