按钮单击调用不带参数的面板方法

时间:2015-05-08 01:47:01

标签: java swing java-8

我有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(){....}

之类的东西

1 个答案:

答案 0 :(得分:1)

只有当您的方法具有ActionEvent参数时,才可以在此处使用方法参考:

button.addActionListener( this::mySpecialMethod );

void mySpecialMethod( ActionEvent e ) { ... }

如果您的方法没有参数,那么接口签名和方法签名不匹配,因此您将遇到编译错误。可能这是一个品味问题,但对我来说e -> mySpecialMethod()看起来并不是多余的(特别是与我在Java 8之前必须使用的匿名类相比)。