2

JToggleButtonを作成しました。これを選択すると、画像が表示されます。画像がボタンの中央に配置されていないことを除いて、すべてが完全に機能します。画像の左上隅がボタンの中心点にあり、画像はボタンの右下隅に向かって下に移動します。

JToggleButton LayoutButton = new JToggleButton();
LayoutButton.setIcon(new ImageIcon());
LayoutButton.setSelectedIcon(new ImageIcon("Image.png"));

画像を中央に配置する方法はありますか?

ありがとう

4

2 に答える 2

3

問題は、最初の画像が選択した画像のサイズと一致しないため、選択した画像が別の場所(この場合は右下)に表示されることです。

最初の「選択されていない」画像のプレースホルダーを作成できます。

public class PlaceHolderIcon implements Icon {

    private final int width;
    private final int height;

    public PlaceHolderIcon(int width, int height) {
        this.width = width;
        this.height = height;
    }

    public int getIconHeight() {
        return height;
    }

    public int getIconWidth() {
        return width;
    }

    public void paintIcon(Component c, Graphics g, int x, int y) {
    }
}

最初のゼロ次元画像を次のように置き換えます。

ImageIcon selectedIcon = new ImageIcon("Image.png");
Image image = selectedIcon.getImage();
PlaceHolderIcon placeHolderIcon = new PlaceHolderIcon(image.getWidth(this), image.getHeight(this));
JToggleButton layoutButton = new JToggleButton();
layoutButton.setIcon(placeHolderIcon);
layoutButton.setFocusPainted(false);
layoutButton.setSelectedIcon(selectedIcon);
于 2012-11-17T13:57:23.980 に答える
1

JToggleButton(実際にはAbstractButtonsetHorizontalAlignment(...) )のandメソッドを使用する必要があります。すべてを中央に配置するためのパラメータとして渡します。setVerticalAlignment(...)SwingConstants.CENTER

ただし、horizo​​ntalAlignmentプロパティとverticalAlignmentプロパティのデフォルト値はすでにSwingConstants.CENTERであることに注意してください。したがって、これで問題が解決しない場合は、ネットからすぐに利用できる画像を使用して問題や問題を示し、現在のボタンの画像を投稿する、コンパイル可能で実行可能な小さなプログラムを投稿することを検討してください。

于 2012-11-17T13:43:57.877 に答える