![](/img/trans.png)
[英]Can I use BufferedReader and create an array inside actionListener class?
[英]How can I use JPopupMenu actionlistener inside a class constructor?
我制作了一个 GUI,它有很多按钮执行完全相同的功能,所以我决定制作一个特殊的JButton
类,它可以执行我想要的操作,其中包括一个JPopupMenu
。 但是,我不明白的show
、 getHeight
和getWidth
出现了一个错误:“ getHeight()
方法对于 new ActionListener(){}
类型未定义”和“ getWidth()
方法对于 new ActionListener(){}
类型未定义ActionListener(){}
。”
注意:我从JPopupMenu
复制了代码; 我不知道它是如何工作的。
public class MyButton extends JButton {
JPopupMenu menu = new JPopupMenu("Menu");
//create menu item
JMenuItem a = new JMenuItem("A");
JMenuItem b = new JMenuItem("B");
JMenuItem c = new JMenuItem("C");
JMenuItem d = new JMenuItem("D");
public MyButton() {
super();
menu.add(a);
menu.add(b);
menu.add(c);
menu.add(d);
this.addActionListener(new ActionListener() {
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent ae) {
menu.show(this, this.getWidth() / 2, this.getHeight() / 2); //here is the error
}
});
}
}
您正在创建的一个匿名实例ActionListener
,并尝试访问MyButton
给你添加通过监听this
-但是this
是ActionListener
。 您应该能够使用ActionEvent
的源,但您需要对其进行转换。
JComponent source = (JComponent)ae.getSource();
menu.show(source, source.getWidth()/2, source.getHeight()/2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.