Java / Swing:低调的按钮高度?

问题描述 投票:3回答: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(),不知道为什么。

java swing jbutton
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);
    }
}

产生


5
投票

作为替代方案,一些L&F(例如Nimbus,Aqua)支持JComponent.sizeVariant,正如Resizing a ComponentUsing Client Properties所讨论的那样。 here说明了几种变化。

image


4
投票

也许只是玩按钮的边框:

Insets insets = button.getInsets();
insets.top = 0;
insets.bottom = 0;
button.setMargin( insets );
© www.soinside.com 2019 - 2024. All rights reserved.