1

8x8 グリッドを構成する必要がある画像があるため、ボードの背景です。

ImageIcon と JLabel を使用してこれを行うことができると言われましたが、試してみましたが、うまくいかないようです。

  • コンポーネントを追加することはできません(JLabelでもあるピース)。
  • また、プログラムの実行中に四角形をクリックすると、四角形が消えます。これは、背景であるはずなので理想的ではありません。

コードは次のとおりです。

      for (int i = 0; i < 8; i++)
       {
        for (int j = 0; j < 8; j++)
        {
            square=new JLabel();
            square.setIcon(icon);
            chessBoard.add( square );
        }
       }

完全なコード: http://pastebin.com/YdavUmGz

この背景画像で何かひどく間違ったことをしていますか?

事前に感謝します。

4

1 に答える 1

3

このようなものをお探しですか?

import java.awt.*;
import javax.swing.*;

public class ChessBoard extends JFrame {

    private JPanel panel;

    public ChessBoard() {
        panel = new JPanel();
        panel.setLayout(new GridLayout(8, 8, 0, 0)); //Create the board
        //Add JLabels
        for (int i = 0; i < 64; i++) {
            JLabel label = new JLabel();
            label.setIcon(
                    new ImageIcon(getClass().getResource("images/face.png")));
            panel.add(label);
        }
        //Add the panel to the JFrame
        this.add(panel);
        this.pack();
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(
                    UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            e.printStackTrace();
        }
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ChessBoard();
            }
        });
    }
}

ここに画像の説明を入力してください

于 2013-03-21T07:41:11.460 に答える