I'm getting an error 'void' type not allowed here
CODE:
public void create(JPanel jp){
jp.add(new JButton().setPreferredSize(new Dimension(40, 40)));
}
But when I use the same code without .setPreferredSize(new Dimension(40, 40)) it works fine.
WORKING CODE
public void create(JPanel jp){
jp.add(new JButton());
}
setPreferredSize "returns" a void, so it cannot be passed as a parameter to add. You'd have to break up the code and separate to several statements:
public void create(JPanel jp){
JButton myButton = new JButton();
myButton.setPreferredSize(new Dimension(40, 40));
jp.add(myButton);
}
Internal code of setPreferredSize from here 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);
}
When you are trying to execute this code
jp.add(new JButton().setPreferredSize(new Dimension(40, 40)));
new JButton().setPreferredSize(new Dimension(40, 40)) return void, Thats why you are getting this 'void' type not allowed here
When you trying to add only new JButton() then its working fine because you are adding instance of JButton.
Solution :
JButton myButton = new JButton();
myButton.setPreferredSize(new Dimension(40, 40));
jp.add(myButton);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With