Java / Swing: altura del botón de bajo perfil?

Me gustaría reducir el tamaño vertical de un JButton. El siguiente código funciona bien para K> 1 pero parece que no puedo reducir el tamaño. ¿Alguna sugerencia?

JButton button = /* ... get button here ... */ Dimension d = button.getPreferredSize(); d.setSize(d.getWidth(), d.getHeight()*K); button.setPreferredSize(d); 

editar: estoy usando JavaBuilders + MigLayout. Parece que tengo que hacer button.setMaxSize(d); en lugar de setPreferredSize (), no estoy seguro de por qué.

Algunas opciones:

 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); } } 

Produce

enter image description here

Como alternativa, algunos L & F (por ejemplo, Nimbus , Aqua ) admiten un JComponent.sizeVariant , como se explica en Cómo JComponent.sizeVariant tamaño de un componente y utilizar las propiedades del cliente .

Tal vez solo juegue con el borde del botón:

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