import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.JFrame;public class FiveChessFrame extends JFrame implements  MouseListener
{
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
BufferedImage image = null;
int x=0;
int y=0;
int[][] allChess = new int[19][19];
public FiveChessFrame() throws IOException{
setTitle("fiveChess");
setSize(500,500);
setLocation((width-500)/2,(height-500)/2);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

addMouseListener(this);
setVisible(true);

}
public void paint(Graphics g) 
{
try
{
image = ImageIO.read(new File("C:\\Documents and Settings\\Owner.LENOVO-A9CFBE99\\桌面\\5字棋\\background.jpg"));
}
catch (IOException e)
{
e.printStackTrace();
}
g.drawImage(image, 3, 20, this); 
g.setFont(new Font("宋体",Font.BOLD,20));
g.drawString("游戏信息:",130, 60);
g.setFont(new Font("黑体",Font.BOLD,20));
g.drawString("白棋还剩:",30, 477);
g.drawString("黑棋还剩:",253, 477);
//绘制棋盘
for(int i=0;i<19;i++){
g.drawLine(14, 70+20*i, 370, 72+20*i);
g.drawLine(14+20*i, 70, 14+20*i, 430);
}
g.fillOval(72, 127, 4, 4);
g.fillOval(314, 127, 4, 4);
g.fillOval(315, 372, 4, 4);
g.fillOval(72, 372, 4, 4);

/*x = (x - 10)/20*20+14;
y = (y - 70)/20*20+70;
g.fillOval(x-7, y-7, 14, 14);

g.setColor(Color.WHITE);
g.fillOval(x-7,y-7, 14, 14);
g.setColor(Color.BLACK);
g.drawOval(x-7,y-7, 14, 14);*/

for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
if (allChess[i][j] == 1) {
// 黑子
int tempX = i * 20 + 10;
int tempY = j * 20 + 70;
g.fillOval(tempX - 7, tempY - 7, 14, 14);
}
if (allChess[i][j] == 2) {
// 白子
int tempX = i * 20 + 10;
int tempY = j * 20 + 70;
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 mouseClicked(MouseEvent e)
{

}
public void mouseEntered(MouseEvent e)
{
// TODO 自动生成方法存根

}
public void mouseExited(MouseEvent e)
{
// TODO 自动生成方法存根

}
public void mousePressed(MouseEvent e)
{
x = e.getX();
y = e.getY();
if (x >= 10 && x <= 370 && y >= 70 && y <= 430) {
x = (x - 10) / 20;
y = (y - 70) / 20;
this.repaint();
}
//System.out.println("X:"+e.getX());
//System.out.println("Y:"+e.getY());


}
public void mouseReleased(MouseEvent e)
{
// TODO 自动生成方法存根
}
}

解决方案 »

  1.   

    其实重画了
    你这里在调用repaint方法之前什么都没处理所以看起来好像没有重绘
    public void mousePressed(MouseEvent e) 

    x = e.getX(); 
    y = e.getY(); 
    if (x >= 10 && x <= 370 && y >= 70 && y <= 430) { 
    x = (x - 10) / 20; 
    y = (y - 70) / 20; 
    this.repaint(); 

    //System.out.println("X:"+e.getX()); 
    //System.out.println("Y:"+e.getY()); 
    } 楼主可以在paint方法里面打印些东西来看看是否重绘了