Доска шахматная кнопки - Java
Формулировка задачи:
Листинг программы
- import java.awt.*;
- import java.awt.image.BufferedImage;
- import javax.swing.*;
- import javax.swing.border.*;
- public class ChessBoardWithColumnsAndRows {
- private final JPanel gui = new JPanel(new BorderLayout(3, 3));
- private JButton[][] chessBoardSquares = new JButton[8][8];
- private JPanel chessBoard;
- private final JLabel message = new JLabel(
- "Chess Champ is ready to play!");
- private static final String COLS = "ABCDEFGH";
- ChessBoardWithColumnsAndRows() {
- initializeGui();
- }
- public final void initializeGui() {
- // set up the main GUI
- gui.setBorder(new EmptyBorder(5, 5, 5, 5));
- JToolBar tools = new JToolBar();
- tools.setFloatable(false);
- gui.add(tools, BorderLayout.PAGE_START);
- tools.add(new JButton("New")); // TODO - add functionality!
- tools.add(new JButton("Save")); // TODO - add functionality!
- tools.add(new JButton("Restore")); // TODO - add functionality!
- tools.addSeparator();
- tools.add(new JButton("Resign")); // TODO - add functionality!
- tools.addSeparator();
- tools.add(message);
- gui.add(new JLabel("?"), BorderLayout.LINE_START);
- chessBoard = new JPanel(new GridLayout(0, 9));
- chessBoard.setBorder(new LineBorder(Color.BLACK));
- gui.add(chessBoard);
- // create the chess board squares
- Insets buttonMargin = new Insets(0,0,0,0);
- for (int ii = 0; ii < chessBoardSquares.length; ii++) {
- for (int jj = 0; jj < chessBoardSquares[ii].length; jj++) {
- JButton b = new JButton();
- b.setMargin(buttonMargin);
- // our chess pieces are 64x64 px in size, so we'll
- // 'fill this in' using a transparent icon..
- ImageIcon icon = new ImageIcon(
- new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB));
- b.setIcon(icon);
- if ((jj % 2 == 1 && ii % 2 == 1)
- //) {
- || (jj % 2 == 0 && ii % 2 == 0)) {
- b.setBackground(Color.WHITE);
- } else {
- b.setBackground(Color.BLACK);
- }
- chessBoardSquares[jj][ii] = b;
- }
- }
- //fill the chess board
- chessBoard.add(new JLabel(""));
- // fill the top row
- for (int ii = 0; ii < 8; ii++) {
- chessBoard.add(
- new JLabel(COLS.substring(ii, ii + 1),
- SwingConstants.CENTER));
- }
- // fill the black non-pawn piece row
- for (int ii = 0; ii < 8; ii++) {
- for (int jj = 0; jj < 8; jj++) {
- switch (jj) {
- case 0:
- chessBoard.add(new JLabel("" + (ii + 1),
- SwingConstants.CENTER));
- default:
- chessBoard.add(chessBoardSquares[jj][ii]);
- }
- }
- }
- }
- public final JComponent getChessBoard() {
- return chessBoard;
- }
- public final JComponent getGui() {
- return gui;
- }
- public static void main(String[] args) {
- Runnable r = new Runnable() {
- @Override
- public void run() {
- ChessBoardWithColumnsAndRows cb =
- new ChessBoardWithColumnsAndRows();
- JFrame f = new JFrame("ChessChamp");
- f.add(cb.getGui());
- f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- f.setLocationByPlatform(true);
- // ensures the frame is the minimum size it needs to be
- // in order display the components within it
- f.pack();
- // ensures the minimum size is enforced.
- f.setMinimumSize(f.getSize());
- f.setVisible(true);
- }
- };
- SwingUtilities.invokeLater(r);
- }
- }
Решение задачи: «Доска шахматная кнопки»
textual
Листинг программы
- import java.awt.*;
- import java.awt.event.*;
- import java.awt.image.BufferedImage;
- import java.time.temporal.IsoFields;
- import javax.swing.*;
- import javax.swing.border.*;
- public class ChessBoardWithColumnsAndRows implements ActionListener {
- private final JPanel gui = new JPanel(new BorderLayout(3, 3));
- private JButton[][] chessBoardSquares = new JButton[8][8];
- private JPanel chessBoardPanel;
- private JPanel chessBoard;
- private final JLabel message = new JLabel("Chess Champ is ready to play!");
- private static final String COLS = "ABCDEFGH";
- private JButton resigButton;
- private boolean isFirstWhite = true;
- ChessBoardWithColumnsAndRows() {
- initializeGui();
- }
- public final void initializeGui() {
- // set up the main GUI
- gui.setBorder(new EmptyBorder(5, 5, 5, 5));
- JToolBar tools = new JToolBar();
- tools.setFloatable(false);
- gui.add(tools, BorderLayout.PAGE_START);
- tools.add(new JButton("New")); // TODO - add functionality!
- tools.add(new JButton("Save")); // TODO - add functionality!
- tools.add(new JButton("Restore")); // TODO - add functionality!
- tools.addSeparator();
- resigButton = new JButton("Resign");
- tools.add(resigButton);
- resigButton.addActionListener(this);
- tools.addSeparator();
- tools.add(message);
- gui.add(new JLabel("?"), BorderLayout.LINE_START);
- chessBoard = new JPanel(new GridLayout(0, 9));
- chessBoard.setBorder(new LineBorder(Color.BLACK));
- initializeChessBoard();
- gui.add(chessBoard);
- }
- private void initializeChessBoard() {
- chessBoard.removeAll();
- Insets buttonMargin = new Insets(0, 0, 0, 0);
- for (int ii = 0; ii < chessBoardSquares.length; ii++) {
- for (int jj = 0; jj < chessBoardSquares[ii].length; jj++) {
- JButton b = new JButton();
- b.setMargin(buttonMargin);
- // our chess pieces are 64x64 px in size, so we'll
- // 'fill this in' using a transparent icon..
- ImageIcon icon = new ImageIcon(new BufferedImage(64, 64,
- BufferedImage.TYPE_INT_ARGB));
- b.setIcon(icon);
- if ((jj % 2 == 1 && ii % 2 == 1)
- || (jj % 2 == 0 && ii % 2 == 0)) {
- if (isFirstWhite) {
- b.setBackground(Color.WHITE);
- } else {
- b.setBackground(Color.BLACK);
- }
- } else {
- if (isFirstWhite) {
- b.setBackground(Color.BLACK);
- } else {
- b.setBackground(Color.WHITE);
- }
- }
- chessBoardSquares[jj][ii] = b;
- }
- }
- // fill the chess board
- chessBoard.add(new JLabel(""));
- // fill the top row
- for (int ii = 0; ii < 8; ii++) {
- chessBoard.add(new JLabel(COLS.substring(ii, ii + 1),
- SwingConstants.CENTER));
- }
- // fill the black non-pawn piece row
- for (int ii = 0; ii < 8; ii++) {
- for (int jj = 0; jj < 8; jj++) {
- switch (jj) {
- case 0:
- chessBoard.add(new JLabel("" + (ii + 1),
- SwingConstants.CENTER));
- default:
- chessBoard.add(chessBoardSquares[jj][ii]);
- }
- }
- }
- chessBoard.revalidate();
- chessBoard.repaint();
- }
- public final JComponent getChessBoard() {
- return chessBoard;
- }
- public final JComponent getGui() {
- return gui;
- }
- public static void main(String[] args) {
- Runnable r = new Runnable() {
- @Override
- public void run() {
- ChessBoardWithColumnsAndRows cb = new ChessBoardWithColumnsAndRows();
- JFrame f = new JFrame("ChessChamp");
- f.add(cb.getGui());
- f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- f.setLocationByPlatform(true);
- // ensures the frame is the minimum size it needs to be
- // in order display the components within it
- f.pack();
- // ensures the minimum size is enforced.
- f.setMinimumSize(f.getSize());
- f.setVisible(true);
- }
- };
- SwingUtilities.invokeLater(r);
- }
- @Override
- public void actionPerformed(ActionEvent evnt) {
- Object source = evnt.getSource();
- if (source == resigButton) {
- isFirstWhite = !isFirstWhite;
- initializeChessBoard();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д