我收到错误'void'类型,此处不允许
CODE:
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());
}
答案 0 :(得分:7)
setPreferredSize
“返回”void
,因此无法将其作为参数传递给add
。你必须分解代码并分成几个语句:
public void create(JPanel jp){
JButton myButton = new JButton();
myButton.setPreferredSize(new Dimension(40, 40));
jp.add(myButton);
}
答案 1 :(得分: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);