Java 摆动错误“'void' 此处不允许输入”

Java swing error " 'void' type not allowed here "

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

setPreferredSize "returns" a void, so it cannot be passed as a parameter to add。您必须分解代码并分成几个语句:

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

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)) return void,这就是为什么您得到此 'void' 此处不允许的类型的原因

当您尝试仅添加 new JButton() 时,它工作正常,因为您正在添加 JButton.

的实例

解决方案:

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