Фон кнопки шахматной доски не установлен в черный цвет - PullRequest
0 голосов
/ 17 декабря 2018

Вот мой код:

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

public class ChessBoardGUI extends JFrame {

private Container contents;
private JButton[][] squares = new JButton[8][8];
private Color colorBlack = Color.BLACK;

private int row = 7;
private int col = 1;

private ImageIcon knight = new ImageIcon("knight.jpg");

public ChessBoardGUI() {
    super("GUI GridLayout Manager - (click a valid square to move knight)");

    contents = getContentPane();
    contents.setLayout(new GridLayout(8,8));

    ButtonHandler buttonHandler = new ButtonHandler();

    for (int i = 0; i < 8; i++) {

        for (int j = 0; j < 8; j++) {

            squares[i][j] = new JButton();
            if ((i + j) % 2 != 0) {

                squares[i][j].setBackground(colorBlack);
            }
            contents.add(squares[i][j]);
            squares[i][j].addActionListener(buttonHandler);
        }
    }
    squares[row][col].setIcon(knight);

    setSize(500, 500);
    setResizable(false);
    setLocationRelativeTo(null);
    setVisible(true);
}

private boolean isValidMove(int i, int j) {
    int rowDelta = Math.abs(i - row);
    int colDelta = Math.abs(j - col);

    if ((rowDelta == 1) && (colDelta == 2)) {
        return true;
    }
    if ((colDelta == 1) && (rowDelta == 2)) {
        return true;
    }
    return false;

}

private void processClick(int i, int j) {
    if (isValidMove(i, j) == false) {
        return;
    }
    squares[row][col].setIcon(null);
    squares[i][j].setIcon(knight);
    row = i;
    col = j;
}

private class ButtonHandler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 8; j++) {
                if (source == squares[i][j]) {
                    processClick(i, j);
                    return;
                }
            }
        }
    }
}

public static void main(String args[]) {
    ChessBoardGUI gui = new ChessBoardGUI();
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


  }

 }

У меня есть программа, которая создает графический интерфейс для шахматной доски, но когда я запускаю свой код, все кнопки белые вместо черно-белых (как шахматы)доска).Может ли кто-нибудь сказать мне, где я делаю неправильно?Любая помощь приветствуется!Когда я запускаю свою программу, я вижу только окно с белыми кнопками, но кнопка черного цвета отсутствует.

1 Ответ

0 голосов
/ 18 декабря 2018

В своем коде я добавил метод setOpaque (), но черный цвет был только на границе, поэтому я добавил эту строку кода:

  squares[i][j].setBorder(null);

Вот код:

 if ((i + j) % 2 != 0) {

                squares[i][j].setBackground(colorBlack);
                squares[i][j].setBorder(null);
                squares[i][j].setOpaque(true);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...