ComboBox: no longer ignore JComboBox.prototypeDisplayValue when computing popup width (issue #80)

This commit is contained in:
Karl Tauber
2020-03-31 18:53:55 +02:00
parent 97d5792341
commit d094709dc8
6 changed files with 7 additions and 14 deletions

View File

@@ -6,6 +6,8 @@ FlatLaf Change Log
- Linux: Fixed scaling if `GDK_SCALE` environment variable is set or if running
on JetBrains Runtime. (issue #69)
- Tree: Fixed repainting wide selection on focus gained/lost.
- ComboBox: No longer ignore `JComboBox.prototypeDisplayValue` when computing
popup width. (issue #80)
- Support changing default font used for all components with automatic scaling
UI if using larger font. Use `UIManager.put( "defaultFont", myFont );`
- No longer use system property `sun.java2d.uiScale`. (Java 8 only)

View File

@@ -480,13 +480,8 @@ public class FlatComboBoxUI
@Override
protected Rectangle computePopupBounds( int px, int py, int pw, int ph ) {
// get maximum display size of all items, ignoring prototype value
Object prototype = comboBox.getPrototypeDisplayValue();
if( prototype != null )
comboBox.setPrototypeDisplayValue( null );
// get maximum display size of all items
Dimension displaySize = getDisplaySize();
if( prototype != null )
comboBox.setPrototypeDisplayValue( prototype );
// make popup wider if necessary
if( displaySize.width > pw ) {

View File

@@ -310,14 +310,13 @@ class BasicComponentsPanel
add(comboBox4, "cell 4 4,growx");
//---- comboBox5 ----
comboBox5.setPrototypeDisplayValue("12345");
comboBox5.setModel(new DefaultComboBoxModel<>(new String[] {
"wide popup if text is longer",
"aa",
"bbb",
"cccc"
}));
add(comboBox5, "cell 5 4,growx");
add(comboBox5, "cell 5 4,growx,wmax 100");
//---- spinnerLabel ----
spinnerLabel.setText("JSpinner:");

View File

@@ -242,7 +242,6 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox5"
"prototypeDisplayValue": "12345"
"model": new javax.swing.DefaultComboBoxModel {
selectedItem: "wide popup if text is longer"
addElement( "wide popup if text is longer" )
@@ -251,7 +250,7 @@ new FormModel {
addElement( "cccc" )
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 4,growx"
"value": "cell 5 4,growx,wmax 100"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "spinnerLabel"

View File

@@ -513,14 +513,13 @@ public class FlatComponentsTest
add(comboBox4, "cell 4 5,growx");
//---- comboBox5 ----
comboBox5.setPrototypeDisplayValue("12345");
comboBox5.setModel(new DefaultComboBoxModel<>(new String[] {
"wide popup if text is longer",
"aa",
"bbb",
"cccc"
}));
add(comboBox5, "cell 5 5,growx");
add(comboBox5, "cell 5 5,growx,wmax 100");
//---- spinnerLabel ----
spinnerLabel.setText("JSpinner:");

View File

@@ -373,7 +373,6 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox5"
"prototypeDisplayValue": "12345"
"model": new javax.swing.DefaultComboBoxModel {
selectedItem: "wide popup if text is longer"
addElement( "wide popup if text is longer" )
@@ -382,7 +381,7 @@ new FormModel {
addElement( "cccc" )
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 5,growx"
"value": "cell 5 5,growx,wmax 100"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "spinnerLabel"