我在一个父类中与Java中的ActionListener作斗争,我尝试了一系列可能的解决方案,但都无法使其工作。这在这里也没有帮助:Java actionlistener在不同的类中执行actionPerformed
问题如下:
父类
package test;
//imports removed for better visibility
public class ParentClass extends JPanel implements ActionListener{
JFrame frame;
public void createParentGui() {
frame = new JFrame("Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel mainCard = new JPanel(new CardLayout(20, 20));
ChildClass card1 = new ChildClass();
mainCard.add(card1);
frame.add(mainCard, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Button pressed, action!");
}
}
子类
package test;
//imports removed for better visibility
public class ChildClass extends ParentClass {
ActionListener listener = null; //this is probably not right, how to do
//with a local variable when passing it to the parent class?
public Child() {
createGui();
}
private void createGui() {
final JButton b = new JButton("press me");
b.addActionListener(listener);
add(b);
}
}
ChildClass
拥有ParentClass
拥有的所有字段和方法(除了它自己唯一的字段和方法之外)。这就是继承的工作原理。
因此,由于ParentClass
是ActionListener
,这意味着ChildClass
也是。更具体地说,ChildClass
继承了ParentClass
的公共void actionPerformed(ActionEvent e)
方法。
因此,将b.AddActionListener(listener);
更改为b.AddActionListener(this)
。(您还可以删除ChildClass
的Listener
字段)
新代码将把“this”ChildClass
对象传递给B
,然后每当按下按钮时,该对象将调用ActionPerformed(ActionEvent e)
。由于任何ChildClass
对象都具有ParentClass
的ActionPerformed(ActionEvent)
,这意味着将调用ParentClass#ActionPerformed(ActionEvent)
(按照您的意图)。
我有java中的类:。和类,它扩展了类。 Class保留Class的实例。 我注意到,当我调用类B的构造函数时(当我在类A中初始化这个参数时),它会执行super(),创建一个新的实例A,并初始化所有It字段。 我如何告诉class
我找到了这个Google标签管理器宏脚本(http://viget.com/advance/gtm#elementclass)标识元素的父元素是否具有特定的类值。 有没有办法修改它以记录值,然后使用规则指定名称?还是有其他方法可以实现这一点?
我正在尝试编写一个代码,它采用车辆名称等并将它们存储在一个对象数组中。我有车辆作为父类,带有一个打印名称、品牌和加仑油箱的toString,父类的两个子类是bus和car。Car和Bus询问有多少门、轮子或乘客。当随机化顺序后打印数组时,我只从父类中获取to Strings以在数组的索引为父类时打印出来。我要打印出来的是:车辆0:名称:汽车品牌:某物:油箱尺寸:15门:4:轮子4 我的代码如下:
我是C语言的新手,正在寻找关于以下问题的建议。我正试图创建一个程序,生成树的形状(是的,真正的树)。这些形状完全由树枝构成。为此,我开始编写一个名为Branch的类。主要的想法是。cpp I创建一个类Branch的实例,它本身将创建Branch的实例。这适用于迭代。 目前,该计划的结构如下: main.cpp: 树枝h: 树枝cpp: 现在,这个程序可以工作,但是我想通过将每个对象存储在一个向量中
我有一个主类。应用程序中有许多子类是从类扩展而来的。base类公开公共方法,如下所示: 应用程序将在子实例上调用以获得一个检查器实例。每个子类都可以有自定义的基本检查器和验证检查器。他们可以使用和方法实现它,但是他们不能覆盖基类的,因为它包含处理逻辑。 在这里使用关键字合适吗?
我正在用Lombok插件做一个Spring项目。我添加了注释,并使父类的字段最终初始化,使用@AllArgsConstructor或@必需ArgsConstructor而不是字段注入(使用类字段的@autowed)。但是,由于某种原因,子类DraftsPostmethod报告了一条消息,即在父类AbstractFuntoryServicemethod中没有找到默认构造函数 我不确定是什么导致了它,