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 回答