Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ボタンの表示について(自作の画像をボタンとして表示したい)

こんにちわ。
質問させていただきます。

自分で作成した画像を、ボタンとして扱うことはできるのでしょうか。
作成した画像を"sample.jpeg"とした場合、
プログラム上はJButtonにてボタンの作成をして、その表示は
"sample.jpeg"にて行いたいと思っております。

 よろしくご教授ください。

7

回答

82424

閲覧

7件の回答

評価

0

API Documentは読んだのか。
JButtonのインストラクタにそういうのがあるよ。

評価

0

アイコンを表示したいだけじゃなくてボタン全体を独自デザインにしたいんじゃないかな。ボタンのフチや輪郭、グラデーション、角を丸くするとか。

paintComponent() をオーバーライドして、Graphics に drawImage すれば sample.jpeg をボタン全体に表示できますよ。他にも LaF としてボタンを作る正攻法もあるんだろうけど、良く分かりません。。

不良社員さんは JButton のインストラクターをされているんですかw

評価

0

なんかおかしいな、とは思っていたんだ。orz
コンストラクタだよな。

評価

0

>アイコンを表示したいだけじゃなくてボタン全体を独自デザインにしたいんじゃないかな。

だったら、JPanelでマウスイベントを拾うのでもいいんじゃ。
クリック時のアニメーションは、もちろん自前だが。

評価

0

ご回答ありがとうございます。
やりたいことは、@さんのおっしゃる通りです。

一応自分なりにMyButton1という自作のボタンをつくってみたのですが、
それをつかっても通常通りのボタンが表示されてしまいます。
どこか足りない部分があるのでしょうか。

以下がMyButton1になります

public class MyButton1 extends JButton{            
    private ImageIcon bgimage;
    public MyButton1(){
        bgimage = new ImageIcon(getClass().getResource("button.jpeg"));
        setOpaque(false);
        setPreferredSize(new Dimension(100, 50));
    }
    public void paintComponent(Graphics g) {
        int w = bgimage.getIconWidth();
        int h = bgimage.getIconHeight();
        g.drawImage(bgimage.getImage(), 0, 0, w, h, null);
        super.paintComponent(g);
    }
}

評価

0

せっかくオーバーライドした paintComponent の最後で、super.paintComponent(g) を呼び出したら親クラスの実装でまた書き直されちゃいますよ。コンポーネントの矩形全体を自分で描画するなら、super.paintComponent は呼ばなくてもいいです。自クラスで一部だけ書き換える場合は、super.paintComponent を先に呼んで、その後で自分のお絵描きをしましょう。

評価

0

できました!
@さん、ありがとうございました!

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。