我对Swing有一些问题。我有JFrame
名为FrameMain
。其中有一个名为JPanel
的{{1}}。
当调用/创建panelChoices
时,它会使用多个FrameMain
个对象填充panelChoices
个对象,这个对象是PanelEntries
,其数量为{{1}在它里面(它是我写的一个不同的类)。
我想要做的是当我点击JPanel
对象中的一个按钮时,我想要销毁/删除JButton
以及其余组件(包括{{1}包含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
,而不仅仅是处理JFrame。答案 0 :(得分:2)
根据给定的信息,
如果您要退出应用程序,使用System.exit(0);
并不是一件大事:)
如果您要处置框架jframe.dispose();
如果您要删除组件/所有组件,可以使用.remove(Component)
/ .removeAll()
等
如果这没有帮助,请重新提供更多信息。