该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
放个镇楼图 希望能吸引点人气~
程序目标是这样的:
我想在屏幕上画很多方框 点击每一个方框之后都会产生不同的功能
部分程序如下:
//这是最外层自定义的Frame class调用了自定义的Screen class
public class Frame extends JFrame
{
public Frame() {
new JFrame();
.
.
Screen screen = new Screen(this);
// add screen to JFrame
this.add(screen);
}
}
// 自定义的Screen class里调用了自定义的GameFrame
public class Screen extends JPanel ... {
.
.
.
public Screen(Frame frame) {
.
.
new GameFrame(..., this.frame);
.
}
// 这个class的目的就是初始化并且画出所有屏幕上需要显示的,可点击的自定义GameButton
public class GameFrame {
.
.
public GameFrame(..., Frame frame) {
GameButton button1 = new GameButton (..., frame);
GameButton button2 = new GameButton (..., frame);
.
.
}
}
// 这边就是会出错的地方了 GameButton class
public class GameButton extends Component implements MouseListener{
.
.
public GameButton(Frame frame, ... ){
.
// 这边不是很确定是否能这样写 因为这样的话每一个GameButton都要让frame重新执行一遍addMouseListener 但是如果不这样写的话 后面被重写的方法还能被执行吗 0.0 求解……
frame.addMouseListener(this);
.
}
.
.
@Override
public void mouseClicked(MouseEvent e) {
.
// 一系列if condition确认了鼠标确实点击在所规定的屏幕范围内
// 这样写代码就是为了不用在外面把所有的
// 之后每新建一个GameButton都会重写特定的Action方法 以此来实现点击之后做的事情 但是这里只打印出每个GameButton的private String name来进行测试
System.out.println(name + " is invoked");
}
.
.
}
运行程序之后不点击鼠标的话是不会报错的
按下鼠标 不抬起来也不会报错 (因为没有执行mouseClicked(MouseEvent e)方法)
问题出在如果点击鼠标 就会报错 好像意思是找不到MouseEvent e
具体错误如下:
.
.
.
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
.
.
.
求助:为什么错了 如何解决……