2

チェス盤を作ろうとしていますが、ボタンにポーン アイコンを追加するコードをどこに配置すればよいかわかりません。実際、それがコードの正しい使い方なのか、それとも間違った場所にあるのか、よくわかりません。

私のコードはこれまでのところ次のようになります。

package gui;

import java.awt.Color;

import javax.swing.ImageIcon;
import javax.swing.JButton;

public class Square extends JButton implements Config {

    public Square(int n) {
        new ImageIcon("pawn.png");
        setBackground(calcColor(n));
     }

    Color calcColor(int n) {
        boolean everysecondSquare = (n % 2==0);
        boolean everysecondRow = ((n / ROWS) % 2 == 0);
        return (everysecondSquare != everysecondRow?P1Color:P2Color);
    }

    public ChessBoard ChessBoard;
}

正方形の背景色を定義する場所と同じ場所にアイコンを追加するとうまくいくと確信していましたが、どうやらうまくいきませんでした。明らかに、私はJavaコーディングに非常に慣れていません。

私は本当にこれを台無しにしましたか?すべてのフィードバックに深く感謝いたします。コードに関する詳細情報が必要な場合は、お知らせください。できるだけ早く追加します。

4

2 に答える 2

2

コンストラクターで Icon オブジェクトを Button に渡すか、ボタンの setIcon メソッドを使用できます。

JButton b = new Button(myIconObject)

myButtonObject.setIcon(myIconObject)

ドキュメントについては、こちらをご覧ください: http://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html

編集:

あなたの場合、コンストラクターの最初の行を編集して

public Square(int n) {
    setIcon(new ImageIcon("pawn.png"));
    setBackground(calcColor(n));
}

ただし、これは、作成されたすべての正方形にポーン アイコンがあることを意味します。それをコンストラクターから移動して、次のようなことを行う方がよいでしょう

Square s = new Square(n);
/* And then somewhere more appropriate ...*/
s.setIcon(new ImageIcon("pawn"));
于 2013-01-23T12:05:12.927 に答える
1

代わりにこれを試してください。実際にボタンのアイコンを設定する必要があります。

public Square(int n) {
setIcon(new ImageIcon("pawn.png"));
setBackground(calcColor(n));
}
于 2013-01-23T12:03:12.530 に答える