爪哇棋方形图像

时间:2014-03-24 22:36:42

标签: java chess

我之前已经问过这个问题但没有得到答案。

我目前正在用Java设计一个棋盘,但取得了一些成功。我需要在我的电脑上为电路板上的每个方块添加一个背景图像,我目前正在写入蓝色和白色之间的交替。

我会在代码中添加什么来改变它?

我的代码:

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

public class chessboard extends JFrame implements MouseListener, MouseMotionListener
{
JLayeredPane layeredPane;
JPanel chessBoard; 
JLabel chessPiece;
int xAdjustment;
int yAdjustment;

public chessboard(){
Dimension boardSize = new Dimension(600, 600);
//  Use a Layered Pane for this this application
layeredPane = new JLayeredPane();
getContentPane().add(layeredPane);
layeredPane.setPreferredSize(boardSize);
layeredPane.addMouseListener(this);
layeredPane.addMouseMotionListener(this);
//Add a chess board to the Layered Pane 
chessBoard = new JPanel();
layeredPane.add(chessBoard, JLayeredPane.DEFAULT_LAYER);
chessBoard.setLayout( new GridLayout(8, 8) );
chessBoard.setPreferredSize( boardSize );
chessBoard.setBounds(0, 0, boardSize.width, boardSize.height);

for (int i = 0; i < 64; i++) {
JPanel square = new JPanel( new BorderLayout() );
chessBoard.add( square );

int row = (i / 8) % 2;
if (row == 0)
square.setBackground( i % 2 == 0 ? Color.blue : Color.white );
else
square.setBackground( i % 2 == 0 ? Color.white : Color.blue );
}
JLabel piece = new JLabel( new ImageIcon("/Users/Downloads/pieces/Rook.jpg") );
JPanel panel = (JPanel)chessBoard.getComponent(0);
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Knight.jpg"));
panel = (JPanel)chessBoard.getComponent(1);
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/King.jpg"));
panel = (JPanel)chessBoard.getComponent(2);
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Queen.jpg"));
panel = (JPanel)chessBoard.getComponent(3);
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Bishop.jpg"));
panel = (JPanel)chessBoard.getComponent(4); 
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Knight.jpg")); 
panel = (JPanel)chessBoard.getComponent(5); 
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Bishop.jpg")); 
panel =(JPanel)chessBoard.getComponent(6); 
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Rook.jpg"));
panel =(JPanel)chessBoard.getComponent(7);
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Pawn.jpg")); 
panel =(JPanel)chessBoard.getComponent(9); 
panel.add(piece); 
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Pawn.jpg")); 
panel =(JPanel)chessBoard.getComponent(10); 
panel.add(piece); 
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Pawn.jpg")); 
panel =(JPanel)chessBoard.getComponent(11); 
panel.add(piece); 
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Pawn.jpg")); 
panel =(JPanel)chessBoard.getComponent(12); 
panel.add(piece); 
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Pawn.jpg")); 
panel =(JPanel)chessBoard.getComponent(13); 
panel.add(piece); 
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Pawn.jpg")); 
panel =(JPanel)chessBoard.getComponent(14); 
panel.add(piece); 
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Pawn.jpg")); 
panel =(JPanel)chessBoard.getComponent(15); 
panel.add(piece);
piece = new JLabel(new ImageIcon("/Users/Downloads/pieces/Pawn.jpg"));
panel =(JPanel)chessBoard.getComponent(8); 
panel.add(piece);
}
public void mousePressed(MouseEvent e){
chessPiece = null;
Component c =  chessBoard.findComponentAt(e.getX(), e.getY());

if (c instanceof JPanel) 
return;

Point parentLocation = c.getParent().getLocation();
xAdjustment = parentLocation.x - e.getX();
yAdjustment = parentLocation.y - e.getY();
chessPiece = (JLabel)c;
chessPiece.setLocation(e.getX() + xAdjustment, e.getY() + yAdjustment);
chessPiece.setSize(chessPiece.getWidth(), chessPiece.getHeight());
layeredPane.add(chessPiece, JLayeredPane.DRAG_LAYER);
}
//Move the chess piece around
public void mouseDragged(MouseEvent me) {
if (chessPiece == null) return;
 c hessPiece.setLocation(me.getX() + xAdjustment, me.getY() + yAdjustment);
}
  public void mouseReleased(MouseEvent e) {
  if(chessPiece == null) return;

  chessPiece.setVisible(false);
  Component c =  chessBoard.findComponentAt(e.getX(), e.getY());

  if (c instanceof JLabel){
  Container parent = c.getParent();
  parent.remove(0);
  parent.add( chessPiece );
  }
  else {
  Container parent = (Container)c;
  parent.add( chessPiece );
  }

  chessPiece.setVisible(true);
  }

  public void mouseClicked(MouseEvent e) {

  }
  public void mouseMoved(MouseEvent e) {
 }
  public void mouseEntered(MouseEvent e){

  }
  public void mouseExited(MouseEvent e) {

  }

  public static void main(String[] args) {
  JFrame frame = new chessboard();
  frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE );
  frame.pack();
  frame.setResizable(true);
  frame.setLocationRelativeTo( null );
  frame.setVisible(true);
 }
}

1 个答案:

答案 0 :(得分:0)

对于每个方块,您都希望将图像设置为JPanel,而不是仅仅更改颜色。 How to add an image to a JPanel?