我有JFrame,里面有JPanel,里面有一个按钮。当我点击我希望它用我指定的方法调用一些方法。这是否可能没有参数?
这是我到目前为止所做的:
JFrame frame = new JFrame("");
JPanel container = new JPanel();
frame.add(container);
JButton button = new JButton("Button");
button.addActionListener( e -> mySpecialMethod()); // I have to create action performed method with has ActionEvent as parameter.
...
有更简单的方法吗?一直这样做似乎是多余的。像button.addActionListener(Foo::bar);
和public void bar(){....}
答案 0 :(得分:1)
只有当您的方法具有ActionEvent
参数时,才可以在此处使用方法参考:
button.addActionListener( this::mySpecialMethod );
void mySpecialMethod( ActionEvent e ) { ... }
如果您的方法没有参数,那么接口签名和方法签名不匹配,因此您将遇到编译错误。可能这是一个品味问题,但对我来说e -> mySpecialMethod()
看起来并不是多余的(特别是与我在Java 8之前必须使用的匿名类相比)。