我想减少JButton的垂直大小。以下代码适用于K> 1,但我似乎无法减小大小。有什么建议?
JButton button = /* ... get button here ... */
Dimension d = button.getPreferredSize();
d.setSize(d.getWidth(), d.getHeight()*K);
button.setPreferredSize(d);
编辑:我正在使用JavaBuilders + MigLayout。看起来我必须做button.setMaxSize(d);
而不是setPreferredSize(),不知道为什么。
一些选择:
import java.awt.*;
public class FrameTest {
public static void main(String[] args) {
JFrame jf = new JFrame("Demo");
jf.getContentPane().setLayout(new FlowLayout());
// Ordinary button
jf.add(new JButton("button 1"));
// Smaller font
jf.add(new JButton("button 2") {{ setFont(getFont().deriveFont(7f)); }});
// Similar to your suggestion:
jf.add(new JButton("button 3") {{
Dimension d = getPreferredSize();
d.setSize(d.getWidth(), d.getHeight()*.5);
setPreferredSize(d);
}});
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.pack();
jf.setVisible(true);
}
}
产生
作为替代方案,一些L&F(例如Nimbus,Aqua)支持JComponent.sizeVariant
,正如Resizing a Component和Using Client Properties所讨论的那样。 here说明了几种变化。
也许只是玩按钮的边框:
Insets insets = button.getInsets();
insets.top = 0;
insets.bottom = 0;
button.setMargin( insets );