小白求解为什么repaint()不能调用前面的paint()啊?

yannsPeng 2015-09-08 07:46:49
public void paint(Graphics g){
g.drawImage(bgImage, 0, 20, this);
g.setFont(new Font("黑体",Font.BOLD,20));
g.drawString("游戏信息:", 100, 60);
g.setFont(new Font("宋体",Font.BOLD,15));
g.drawString("黑方时间:", 60,480);
g.drawString("白方时间:", 250,480);
//绘制棋盘
for(int i=0;i<381;i++){
g.drawLine(13, 80+i, 394, 80+i);
g.drawLine(14+i, 81, 14+i,457 );
i+=20;
}
//标注点位
g.fillOval(74, 139, 5, 5);
g.fillOval(75, 394, 5, 5);
g.fillOval(328, 140, 5,5 );
g.fillOval(328, 393, 5, 5);
g.fillOval(202, 267, 5, 5);
//绘制棋子
for(int i=0;i<19;i++){
for(int j=0;j<19;j++){
if(allChess[i][j]==1){
int tempX=i*20+13;
int tempY=j*20+81;
g.fillOval(tempX-7, tempY-7, 14, 14);
}
if(allChess[i][j]==2){
int tempX=i*20+13;
int tempY=j*20+81;
g.setColor(Color.WHITE);
g.fillOval(tempX-7, tempY-7, 14, 14);
g.setColor(Color.BLACK);
g.drawOval(tempX-7, tempY-7, 14, 14);
}
}
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
//System.out.println("x:"+e.getX());
//System.out.println("y:"+e.getY());
x=e.getX();
y=e.getY();
if(x <=394 && x >= 13&& y >= 81&& y <= 457){
//JOptionPane.showMessageDialog(this, "已超出棋盘范围");
int i=(x-13)/20;
int j=(y-81)/20;
this.repaint();

}
...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gloomyfish 2015-09-11
  • 打赏
  • 举报
回复
你是不是在JPanel里面这么做的,你应该重写paintComponent方法 paint方法是AWT的做法,不推荐!!! 最好别用!!!!
yannsPeng 2015-09-11
  • 打赏
  • 举报
回复
好像问题在于如何判断allChess数组为1或者2啊
yannsPeng 2015-09-10
  • 打赏
  • 举报
回复
求解为什么啊
yannsPeng 2015-09-10
  • 打赏
  • 举报
回复
就是在棋盘上不会显示黑子白子,没有其他错误代码,我怀疑是this.reprint()调用错误
Sacrix 2015-09-09
  • 打赏
  • 举报
回复
有提示信息吗?
yannsPeng 2015-09-08
  • 打赏
  • 举报
回复
yannsPeng 2015-09-08
  • 打赏
  • 举报
回复
小白求解啊

50,343

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧