Skip to content

Commit 3c85b27

Browse files
hansonrhansonr
authored andcommitted
AWT Label/Button default peer preferred size
1 parent 4b9cbc6 commit 3c85b27

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSButtonUI.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@
2828

2929
package swingjs.plaf;
3030

31+
import java.awt.Button;
3132
//import java.awt.FontMetrics;
3233
import java.awt.Dimension;
34+
import java.awt.Font;
35+
import java.awt.FontMetrics;
3336
import java.awt.Graphics;
3437
import java.awt.Insets;
3538
import java.awt.event.KeyEvent;
@@ -90,7 +93,7 @@ public DOMNode updateDOMNode() {
9093
isSimpleButton = true;
9194
allowPaintedBackground = false;
9295
setDoPropagate();
93-
domNode = enableNode = buttonNode = newDOMObject("button", id + "_dom", "type", "button");
96+
domNode = enableNode = buttonNode = newDOMObject("button", id + "_dom", "type", "button", "style", "padding:0");
9497
//DOMNode.setStyles(domNode,"transform","translateY(0.5px)translateX(0.5px)");
9598
addClass(domNode, "j2sbutton");
9699
setFocusable();
@@ -795,5 +798,12 @@ public boolean isFocusable() {
795798
return true;
796799
}
797800

798-
801+
@Override
802+
public Dimension getPreferredSize(JComponent jc) {
803+
if (isAWT && isSimpleButton)
804+
return JSLabelUI.getMinimumSizePeer(jc, button);
805+
return super.getPreferredSize(jc);
806+
807+
}
808+
799809
}

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSComponentUI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1937,7 +1937,7 @@ public void print(Graphics g) {
19371937
}
19381938

19391939
@Override
1940-
public final Dimension getMinimumSize() {
1940+
public Dimension getMinimumSize() {
19411941
// from ComponentPeer; convenience only
19421942
return getMinimumSize(jc);
19431943
}

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSLabelUI.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package swingjs.plaf;
22

33
import java.awt.Dimension;
4+
import java.awt.Font;
5+
import java.awt.FontMetrics;
46
import java.awt.Graphics;
57
import java.awt.Rectangle;
68

@@ -109,7 +111,20 @@ public void paint(Graphics g, JComponent c) {
109111
@Override
110112
public Dimension getPreferredSize(JComponent jc) {
111113
updateDOMNode();
112-
return (label == null ? super.getPreferredSize(jc) : JSGraphicsUtils.getPreferredButtonSize(((AbstractButton) jc), ((AbstractButton) jc).getIconTextGap()));
114+
return (isAWT ? getMinimumSizePeer(jc, label) : label == null ? super.getPreferredSize(jc) : JSGraphicsUtils.getPreferredButtonSize(((AbstractButton) jc), ((AbstractButton) jc).getIconTextGap()));
113115
}
114116

117+
static Dimension getMinimumSizePeer(JComponent jc, Object label) {
118+
Font f = jc.getFont();
119+
String s = null;
120+
if (f == null)
121+
return new Dimension(14, 8);
122+
FontMetrics fm = f.getFontMetrics();
123+
s = ((JLabel) label).getText();
124+
if (s == null)
125+
s = "";
126+
return new Dimension(fm.stringWidth(s) + 14, fm.getHeight() + 8);
127+
}
128+
129+
115130
}

0 commit comments

Comments
 (0)