【问题标题】:Java swing error " 'void' type not allowed here " [duplicate]Java swing错误“此处不允许'void'类型” [重复]
【发布时间】:2016-01-23 09:11:09
【问题描述】:

我收到一个错误此处不允许使用“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());
}

【问题讨论】:

    标签: java swing jpanel jbutton


    【解决方案1】:

    setPreferredSize“返回”void,因此它不能作为参数传递给add。您必须分解代码并分成几个语句:

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

    【讨论】:

    • 由于某种原因,我不允许编辑您的答案,但您在其中有一个重复的new,而setPreferredSize() 最后缺少;。也许你可以纠正它。
    • @morido 你不允许编辑,因为 chalitha 有一个入站编辑来应用这些确切的更改,我刚刚接受了。谢谢你们。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多