Java / Swing:低调的button高度?

我想减less一个JButton的垂直大小。 下面的代码适用于K> 1,但似乎无法缩小大小。 有什么build议么?

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(例如NimbusAqua )支持JComponent.sizeVariant ,如调整组件大小使用客户端属性中所述

也许只是玩button的边框:

 Insets insets = button.getInsets(); insets.top = 0; insets.bottom = 0; button.setMargin( insets );