Java Swing 出现错误 " 'void' type not allowed here "。

3

我遇到了一个错误:“此处不允许使用void类型”

代码:

public void create(JPanel jp){
    jp.add(new JButton().setPreferredSize(new Dimension(40, 40)));        
}

但是,当我不使用.setPreferredSize(new Dimension(40, 40))这行代码时,它可以正常工作。

可行的代码

public void create(JPanel jp){
    jp.add(new JButton());
}
2个回答

7

setPreferredSize 方法返回的是 void,因此无法将其作为参数传递给 add 方法。您需要将代码拆分并分成多个语句:

public void create(JPanel jp){
    JButton myButton = new JButton();
    myButton.setPreferredSize(new Dimension(40, 40));
    jp.add(myButton);
}

由于某些原因,我无法编辑您的答案,但是您在其中有一个重复的 new,而 setPreferredSize() 结尾缺少一个 ;。也许您可以纠正一下。 - morido
@morido,你不能编辑,因为Chalitha有一个入站编辑要应用这些确切的更改,我已经接受了。谢谢你们两个。 - Mureinik

4

setPreferredSize的内部代码可以从这里获取:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/swing/JComponent.java#JComponent.setPreferredSize%28java.awt.Dimension%29


该方法用于设置组件的首选大小。
public void setPreferredSize(Dimension preferredSize) {                    
  super.setPreferredSize(preferredSize);
}

当您尝试执行此代码时:
jp.add(new JButton().setPreferredSize(new Dimension(40, 40))); 

new JButton().setPreferredSize(new Dimension(40, 40)) 的返回值是void,所以您会得到“void”类型不允许在此处的错误提示。

当您尝试添加只有 new JButton() 时,它可以正常工作,因为您添加了一个 JButton 实例。

解决方法:

JButton myButton = new JButton();
myButton.setPreferredSize(new Dimension(40, 40));
jp.add(myButton);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接