📄 chessboardpanel.java
字号:
package BlackAndWhite;
import BlackAndWhite.*;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.lang.*;
import java.awt.event.*;
public class ChessBoardPanel
extends JPanel implements Observer,MouseListener{
private ImageIcon bk,black,white,mark;
private Chessboard cb;
private boolean wait=true;
private int currentP=Style.EMPTY;
public ChessBoardPanel(Chessboard cb){
bk=new ImageIcon("Images/boardBk.gif");
black=new ImageIcon("Images/chessBlack.gif");
white=new ImageIcon("Images/chessWhite.gif");
mark=new ImageIcon("Images/mark.gif");
cb.addObserver(this);
this.cb=cb;
setPreferredSize(new Dimension(420, 420));
addMouseListener(this);
}
public void paint(Graphics g){
super.paint(g);
for(int x=0;x<8;x++)
for(int y=0;y<8;y++){
g.drawImage(bk.getImage(),10+50*x,10+50*y,this);
if(cb.board[y][x]==Style.BLACK)
g.drawImage(black.getImage(),10+50*x,10+50*y,this);
else if(cb.board[y][x]==Style.WHITE)
g.drawImage(white.getImage(),10+50*x,10+50*y,this);
}
if(cb.currentX>=0&&cb.currentY>=0)
g.drawImage(mark.getImage(),10+50*cb.currentX,10+50*cb.currentY,this);
}
public void update(Observable o, Object arg){
repaint();
}
public void restart(){
wait=true;
repaint();
}
public void reset(){
restart();
}
public void start(int p){
wait=false;
currentP=p;
repaint();
}
public void disable(boolean b){
wait=!b;
}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){
if((e.getModifiers()&InputEvent.BUTTON1_MASK)!=0){
if(currentP!=cb.currentP) return ;
if(wait) return ;
int x=e.getX();
int y=e.getY();
if(x<10||y<10||x>=410||y>=410) return ;
x=(x-10)/50;
y=(y-10)/50;
cb.playChess(x,y);
}
}
public void mouseEntered(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -