Java/Swing: 低调按钮高度?

3

我想要减小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(),不确定为什么。

3个回答

5
几个选项:
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);
    }
}

产生

在此输入图片描述


1
注意事项:在Java Swing中,我应该避免使用set(Preferred|Maximum|Minimum)Size方法吗? - trashgod

5

有没有可能为这个答案提供您可爱的Aqua PLAF图像之一?我本来可能会要求您提交答案,但它已经关闭了。 - Andrew Thompson

4
也许只需要调整按钮的边框:
Insets insets = button.getInsets();
insets.top = 0;
insets.bottom = 0;
button.setMargin( insets );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接