Java swing错误“'void'类型不允许在这里”

时间:2016-01-23 09:11:09

标签: java swing jpanel jbutton

我收到错误'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());
}

2 个答案:

答案 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);