-
Bug
-
Resolution: Unresolved
-
P4
-
None
-
6
-
x86
-
windows_xp
FULL PRODUCT VERSION :
java version "1.6.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-beta-b59g)
Java HotSpot(TM) Client VM (build 1.6.0-beta-b59g, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
Same problem for earlier JDKs.
If a JComboBox is editable, the default width of the editor component (JTextField)
is 9 columns. The method setPrototypeDisplayValue can not be used
to make the JComboBox smaller than the editor.
Suggestions:
Allow setPrototypeDisplayValue to affect the size of the editor,
or document the setPrototypeDisplayValue method to
indicate its limitaions when used with an editable JComboBox .
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
See sample code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I would expect the setPrototypeDisplayValue method to work as documented.
ACTUAL -
setPrototypeDisplayValue can not be used to create a preferred size that is
smaller then the editor components prefered size.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* Editable JComboBox prerred size problem.
*/
public class TestJComboBox
{
public static void main(String[] args)
{
JPanel contents = new JPanel(new FlowLayout());
// This combo gets a proper peferred size.
JComboBox box1 = new JComboBox(new String[] {"one", "two", "MMM"});
box1.setPrototypeDisplayValue("MMM");
// This editable combo does not get a proper peferred size.
JComboBox box2 = new JComboBox(new String[] {"one", "two", "MMM"});
box2.setEditable(true);
box2.setPrototypeDisplayValue("MMM");
contents.add(box1);
contents.add(box2);
JFrame frame = new JFrame("Test");
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.setContentPane(contents);
frame.pack();
frame.setSize(400,400);
frame.setVisible(true);
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
For an editable combo, handle the preferred size by tweaking the default editor.
i.e.
((JTextField)box2.getEditor().getEditorComponent()).setColumns(3);
java version "1.6.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-beta-b59g)
Java HotSpot(TM) Client VM (build 1.6.0-beta-b59g, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
Same problem for earlier JDKs.
If a JComboBox is editable, the default width of the editor component (JTextField)
is 9 columns. The method setPrototypeDisplayValue can not be used
to make the JComboBox smaller than the editor.
Suggestions:
Allow setPrototypeDisplayValue to affect the size of the editor,
or document the setPrototypeDisplayValue method to
indicate its limitaions when used with an editable JComboBox .
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
See sample code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I would expect the setPrototypeDisplayValue method to work as documented.
ACTUAL -
setPrototypeDisplayValue can not be used to create a preferred size that is
smaller then the editor components prefered size.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* Editable JComboBox prerred size problem.
*/
public class TestJComboBox
{
public static void main(String[] args)
{
JPanel contents = new JPanel(new FlowLayout());
// This combo gets a proper peferred size.
JComboBox box1 = new JComboBox(new String[] {"one", "two", "MMM"});
box1.setPrototypeDisplayValue("MMM");
// This editable combo does not get a proper peferred size.
JComboBox box2 = new JComboBox(new String[] {"one", "two", "MMM"});
box2.setEditable(true);
box2.setPrototypeDisplayValue("MMM");
contents.add(box1);
contents.add(box2);
JFrame frame = new JFrame("Test");
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.setContentPane(contents);
frame.pack();
frame.setSize(400,400);
frame.setVisible(true);
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
For an editable combo, handle the preferred size by tweaking the default editor.
i.e.
((JTextField)box2.getEditor().getEditorComponent()).setColumns(3);