如何创建:
JButton b = new JButton("text").addActionListener(e -> classX.addNewTest()));
buttons.add(b);
在一行?我试过这个:
panel.add(b = new JButton("text").addActionListener(e -> classX.addNewTest()));
但我怎么能这样做呢?创造一个" b"?
答案 0 :(得分:2)
如果你真的想在一行中这样做,你可以扩展JButton类并在实例初始化器中添加监听器:
panel.add(new JButton("text") {{ addActionListener(e -> classX.addNewTest()); }} );
我不推荐这样做:它很难理解,几乎是代码混淆,它正在创建一个JButton的子类,而根本没有真正扩展它的功能。请参阅What is Double Brace initialization。
更好的方法是编写一个创建按钮的方法 - 我为大多数组件执行此操作:
panel.add(createJButton("test", e -> classX.addNewTest()));
...
private JButton createJButton(String text, ActionListener listener) {
JButton button = new JButton(text);
button.addActionListener(listener);
// more customization if needed
return button;
}
答案 1 :(得分:1)
如果我没有错误这行不可能!
<强>为什么吗
因为有不同的类型,例如:
jButton.addActionListener(Action)
不会返回void
的任何内容,因此您无法向采用JButton
类型的List添加void类型。
您可以收到此错误:'void' type not allowed here
和type-mismatch-cannot convert typeX to typeY
What is "Type mismatch" and how do I fix it?
希望这可以帮到你。
答案 2 :(得分:0)
您还可以查看*pcur
:
Action