如何在java中的一行中创建一个selfexisting按钮?

时间:2017-01-28 11:05:22

标签: java jbutton

如何创建:

JButton b = new JButton("text").addActionListener(e -> classX.addNewTest()));
buttons.add(b);

在一行?我试过这个:

panel.add(b = new JButton("text").addActionListener(e -> classX.addNewTest()));

但我怎么能这样做呢?创造一个" b"?

3 个答案:

答案 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 heretype-mismatch-cannot convert typeX to typeY

What is "Type mismatch" and how do I fix it?

希望这可以帮到你。

答案 2 :(得分:0)

您还可以查看*pcur

Action