0

私のアプローチが実用的でないことはわかっていますが、これは Java にもう少し慣れるのに役立ちます。JButton サブクラス (MyButton という名前) を作成しようとしています。MyButton は基本的に、カスタム イメージの背景を持つ新しい GUI ボタン​​を作成します。クラスで新しいボタンを作成する方法は知っていますが、MyButton クラスが作成するボタンを参照する方法がわかりません。コードが示すように、ボタンのアイコンを設定する必要がありますが、これはサブクラス内で行う必要があるため、使用する必要はありません。作成時にコーダーがテクスチャを参照する文字列を入力すると、MyButton は JButton のすべてのプロパティを持ちますが、その画像セットも既に持っています。以下は私のソースコードです。

package Classes;
import javax.swing.ImageIcon;
import javax.swing.JButton;

public class MyButton extends JButton{
private static final long serialVersionUID = 1L;

public JButton abc = new JButton();
private ImageIcon def;
private MyButton ghi;

public MyButton(String image){

    def = new ImageIcon(getClass().getResource(image));

    //abc.setIcon(def);
    //abc.setPressedIcon(def);

    ghi = new MyButton("image.png");
    ghi.setIcon(def);


}
}

解決 しました。ありがとうサム。「this.setIcon」は機能すると思います

4

3 に答える 3

2

おそらく私はあなたを誤解していますがMyButton、ボタンを作成しません(またはおそらく作成すべきではありません)。それボタンです。(技術的には、これはボタンの一種です。) メソッドpublic MyButton...は、MyButtonクラスのコンストラクター メソッドです。新しい MyButton を初期化します。thisキーワードは、MyButtonクラス内のボタンを参照します。その外側では、次のようなコードを使用します。

MyButton aButton = new MyButton();
于 2013-04-12T22:42:36.647 に答える
0
public class MyButton extends JButton{
private static final long serialVersionUID = 1L;
private ImageIcon def;
private MyButton ghi;

public MyButton(){
def = new ImageIcon("image.png");
super(def);
}
}

上記のクラスに沿った何か。

于 2013-04-12T22:49:16.537 に答える
0

JButton を拡張すると、ボタンである新しいオブジェクトが得られます。
元の JButton には draw メソッドがあり、ボタンをキャンバスに描画します。

ボタンの paintComponent() メソッドを次のようにオーバーライドする必要があると思います。

@Override
public void paintComponent(Graphics g) {
    // g.drawImage(image) or something...
}

//  Also has a paintBorder() method
public void paintBorder(Graphics g) {
   // Draw your border if mouse over
}

したがって、初期化された画像ファイルを描画できます。ボタンは通常の JButton のように機能しますが、コンストラクターは画像の URL を取得します。(あなたはすでにこれをしました)。

于 2013-04-12T22:51:56.123 に答える