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() の代わりにやらなければならないようです。

4

3 に答える 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);
    }
}

生産する

ここに画像の説明を入力してください

于 2010-05-24T20:24:29.477 に答える
5

別の方法として、コンポーネントのサイズ変更とクライアント プロパティの使用で説明されているように、一部の L&F ( NimbusAquaなど) が a をサポートしています。いくつかのバリエーションをここに示しますJComponent.sizeVariant

画像

于 2010-05-24T20:39:07.297 に答える
4

ボタンの Border で遊んでみてください:

Insets insets = button.getInsets();
insets.top = 0;
insets.bottom = 0;
button.setMargin( insets );
于 2010-05-25T01:00:34.850 に答える