1

だから私はtictactoeボードを作成しようとしていますが、何も表示されません。(メインクラスがありますが、「GameBoard」を作成するだけです)

どんな助けでも大歓迎です、よろしくお願いします。

だから私はそれを忘れたとは信じられないコンポーネントを追加しました、私は疲れているに違いありません。

しかし、今私が得るのは1つの赤い正方形だけです。

    public GameBoard() 
    {

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(0, 0, 195, 215);
        frame.setSize(new Dimension (300, 400));
        int count = 1;
        Rectangle board[][] = new Rectangle[3][3];


        for (int row = 0; row < board.length; row++){
            for (int col = 0; col < board[row].length; col++){
                if (count == 2){

                board[row][col] = new Rectangle(1,1,1,1);
               board[row][col].setBackground(Color.RED);
               frame.add(board[row][col]);
               count--;
            } else {board[row][col] = new Rectangle(1,1,1,1);
                    board[row][col].setBackground(Color.BLACK);
                    frame.add(board[row][col]);
                    count++;
                }
            }}
        frame.pack();
        frame.setVisible(true);
}}

長方形クラス:

public class Rectangle extends JComponent  {


    public Rectangle(int x, int y, int w, int h)  {
        super();
        setBounds(x, y, w, h);
        setBackground(Color.black);
    }


    public void paint(Graphics g)  {
        g.setColor( getBackground() );
        g.fillRect(0, 0, getWidth()-1, getHeight()-1);
        paintChildren(g);
   }

}

4

2 に答える 2

1

論理的には、実際にボードをJFrameに追加する手順がありません。

frame.add(...);

forループ内にあるため、JFrameとRectanglesを作成していますが、JFrameに長方形を追加することはありません。

@AmitDが指摘したように、JFrame.add()はRectanglesを受け入れないため、paintComponent()メソッド内にRectanglesをペイントするためにJComponentを拡張するクラスを作成する必要があります。

表示の問題に対処するには(赤のみが表示されます):

;のレイアウトマネージャーを設定する必要がありますJFrame。私GridLayoutはあなたの場合に最も適切だと思います:

...
JFrame frame = new JFrame();
frame.setLayout(new GridLayout(3,3));
...
于 2012-11-01T19:50:01.977 に答える
0

空のJFrameを作成し、配列に格納する長方形の束を作成しますが、どこにもペイントしないため、フレームは空のままになります。

これらの長方形を(メソッドをオーバーライドしてpaintComponent())JComponentにペイントし、このJComponentをフレームに追加する必要があります。

編集:@whiskeyspiderが指摘しているように、標準のRectangleクラスにはsetBackground()メソッドはありません。したがって、Rectangleが自分のクラスであり、JComponentのサブクラスである場合は、Rectangleのインスタンスをフレームに追加する必要があります。

于 2012-11-01T19:50:23.753 に答える