0

JButtonにカスタム画像を使用しようとしましたが、周囲に白いボックスがあることを除けば、うまく機能します。これを修正する方法がわかりません。助けが必要です。(新しいImageButton( "Quit"、 "src / button.png"、128、64)を使用してボタンを作成します。ボタンのサイズは変更できず、画像ファイルは256X128です)

ボタンクラス:

public class ImageButton extends JButton {

    Image image;
    ImageObserver imageObserver;

    public ImageButton(String text, String filename, int width, int height) {
        super(text, new ImageIcon(filename));
        setSize(width, height);
        setHorizontalTextPosition(JButton.CENTER);
        setVerticalTextPosition(JButton.CENTER);
    }
}

getInsetsオーバーライドを使用した画像:

の写真

4

3 に答える 3

1

これは、にゼロ以外のインセットがあるという事実が原因である可能性が高いですImageButton。オーバーライドしてみてくださいgetInsets()

@Override
public Insets getInsets() {
   return new Insets(0, 0, 0, 0);
}
于 2012-11-18T18:20:28.533 に答える
0

paintComponent()デフォルトの代わりにカスタム画像を描画するために使用してくださいJButton。また、にペイントする場合は、に画像をJPanel使用します。JPanel.print()JPanel

于 2012-11-18T18:28:23.873 に答える
0

わかりました、アンドリューはこれについて私を助けてくれました。彼は私にこのリンクを指摘しました、そしてそれは私がただ境界線とコンテンツ領域を無効にする必要があることがわかりました。アンドリューありがとう!

リンクをたどりたくない場合の詳細:これから抜け出す必要がある主なことは、境界線が次のようにnullである必要があることです:button.setBorderPainted(false); button.setBorder(null);また、コンテンツ領域を描画されないように設定する必要があります:button.setContentAreaFilled(false);これが独自のカスタムボタンを作成します!

于 2012-11-19T15:43:51.213 に答える