java五子棋鼠标事件问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:13:05
共两个文件
MyFrame.java
import javax.swing.JFrame;

public class MyFrame extends JFrame {
public MyPanel panel;
public MyFrame(){
super();
panel = new MyPanel(this);
getContentPane().add(panel);
setSize(515, 515);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
MyFrame frame = new MyFrame();
}

}

MyPanel.java

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import javax.swing.JPanel;

public class MyPanel extends JPanel {

int xPos;
int yPos;
int inaccuracy;
private MyFrame frame;
boolean turn = false;

public static int[] location = new int[16];
static {
for (int

已经帮楼主解决了这个问题。。

把楼主说的那段程序改成这样就行了。。不要用 repaint() 直接用楼主写的

paint() 方法就行了。。。祝你好运!

this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
MyPanel.this.mouseAction(e);
//System.out.println(e);
//processMouseEvent(e);
//repaint();
paint();
}
});

把 MyPanel.java
的初始值设置如下:

int xPos=-10;
int yPos=-10;

原因是因为在程序刚运行的时候生成了一个

-15,-15,25,25

这样的一个圆,但在界面中只看到了 一半。。

现在就不会生成了。。。

public void mouseAction(MouseEvent e) {

paint();
xPos = chessPos(e.getX());
yPos = chessPos(e.getY());
System.out.println(xPos+", "+yPos);
}

你看清楚了,调用了,不是没有调用 。。。

你的要求还真多呀。。

不能这么搞,知道不。。。一个又一个的。。

你再这样,我真无语啦。。。