【发布时间】:2012-01-22 10:02:37
【问题描述】:
假设您有一个JFrame 的子类,并使用它来创建您自己的自定义JFrame。在这个类(我们称之为mainFrame)中,我们创建一个对另一个自定义JFrame 类的引用(我们称之为sidePanel)。
在sidePanel,你有不同的按钮,单选按钮,..
我的问题是,有没有办法通知mainFrame 用户按下按钮?
我已经创建了一个(未经测试的)示例来说明我的意思:
class mainFrame extends JFrame {
public mainFrame() {
super("main frame");
//...........
sidePanel panel = new sidePanel();
//...........
}
public static void main(String[] args) {
mainFrame mainF = new mainFrame();
//.........
}
}
还有sidePanel 类:
class sidePanel extends JFrame {
public sidePanel() {
super("sidePanel frame");
//...........
JButton button1 = new JButton();
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
//Notify mainFrame somehow button is pressed
}});
//...........
}
}
【问题讨论】:
-
"说,你有一个 JFrame 的子类,并用它来创建你自己的自定义 JFrame。在这个类中(我们称之为 mainFrame,我们创建一个对另一个自定义 JFrame 的引用..” 这是两句话中的两个设计错误。真好!1)一个应用程序。通常需要对框架的引用,而不是扩展框架的类。 2) 不要使用超过一帧。显示其余内容有多种选择。
-
@AndrewThompson 好吧,我只是想制作一个带有主框架和侧框架的应用程序,如 GIMP 或许多其他绘画程序。只使用 2 个 JFrame 是最简单的事情。你有什么建议呢?我愿意接受其他想法。
-
"like GIMP" GIMP 经常被视为我们不应该将多帧应用程序强加给(不幸的)最终用户的经典示例。 “我愿意接受其他想法。” 1) 一个
JFrame拥有许多JDialog实例。 2) 一个JDesktopPane有许多JInternalFrame实例 3) 一个JFrame有许多可浮动的JToolBar实例.. -
其他建议:JSplitPane,侧窗格...在一边。
-
感谢您的提示,我选择了 JToolBar 选项 :)