Hi,
Came across a problem when painting a JComboBox with null or empty items
in it; patch is attached.
It's a bit of a workaround, but I think it's good enough (it's a rare
case, so it's not worth hacking into the higher Component-level methods
that the ComboBox inherits).
Corresponding Mauve testcase is also being submitted on that list.
Francis
Index: javax/swing/plaf/basic/BasicComboBoxRenderer.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java,v
retrieving revision 1.9
diff -u -r1.9 BasicComboBoxRenderer.java
--- javax/swing/plaf/basic/BasicComboBoxRenderer.java 17 Mar 2006 15:18:24 -0000 1.9
+++ javax/swing/plaf/basic/BasicComboBoxRenderer.java 8 Jun 2006 18:47:03 -0000
@@ -75,12 +75,24 @@
/**
* Returns preferredSize of the renderer
- *
+ *
* @return preferredSize of the renderer
*/
public Dimension getPreferredSize()
{
- return super.getPreferredSize();
+ if (this.getText() != null && ! this.getText().equals(""))
+ return super.getPreferredSize();
+ else
+ {
+ // If the combo box option's text is empty or null, it won't size
+ // properly (ie, it'll be way too short)... so we throw in a dummy
+ // space to trick the superclass's sizing methods.
+ String oldText = this.getText();
+ this.setText(" ");
+ Dimension d = super.getPreferredSize();
+ this.setText(oldText);
+ return d;
+ }
}
/**