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
对象。