Java / Swing: altura do botão de baixo perfil?

Eu gostaria de reduzir o tamanho vertical de um JButton. O código a seguir funciona bem para K> 1, mas não consigo reduzir o tamanho. Alguma sugestão?

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

edit: Estou usando o JavaBuilders + MigLayout. Parece que eu tenho que fazer button.setMaxSize(d); em vez de setPreferredSize (), não sei porque.

Algumas opções:

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

Produz

insira a descrição da imagem aqui

Como alternativa, alguns L & Fs (por exemplo, Nimbus , Aqua ) suportam um JComponent.sizeVariant , como discutido em Redimensionando um componente e usando propriedades do cliente .

Talvez apenas jogue com a borda do botão:

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