Доска шахматная кнопки - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д