Swing scala-调用已创建的新按钮
我有这个:Swing scala-调用已创建的新按钮,swing,scala,Swing,Scala,我有这个: def top = new MainFrame { contents = new GridBagPanel { def constraints(x: Int, y: Int, .... ) {...} add(btn("A"), constraints(0, 0)) private def btn(name: String): Button = new Button() { text = name } } 而且它不会显示按钮的名称,但是当我用这种方式
def top = new MainFrame {
contents = new GridBagPanel {
def constraints(x: Int, y: Int, .... ) {...}
add(btn("A"), constraints(0, 0))
private def btn(name: String): Button = new Button() {
text = name
}
}
而且它不会显示按钮的名称,但是当我用这种方式书写时,它很好:
def top = new MainFrame {
contents = new GridBagPanel {
def constraints(x: Int, y: Int, .... ) {...}
add(new Button("A"), constraints(0, 0))
}
}
我真的不明白为什么?它可能会起作用,只需通过不使用“name”参数来替换btn方法的声明:
private def btn(x: String): Button = new Button() {
text = x
}
原因是,如果您浏览scala源代码,然后是它的超类,您可以看到Component类中声明了一个名称变量(参见第81行)
因此,在您的第一个代码中,它不会从您传递的参数中获取值,而是从上面的peer.getName中获取“name”,该值为null,最后会使您的按钮文本未正确更新。woww,我尝试了很多方法,但不明白为什么要获取null
value。真的谢谢,现在很完美!
def name: String = peer.getName