我有这个带有SWT GUI的java项目。 我已经开展了几个星期的工作,但我遇到了一些我无法解决的问题。
我有一个MainMenu对象渲染主菜单,它上面有一些按钮。
public static void main(String[] args) {
MainMenu menu=new MainMenu();
menu.run();
}
主菜单有一个扩展MouseAdapter的内部类:
private class StartGameListener extends MouseAdapter
它的目的是听取开始游戏按钮并根据用户选择启动游戏,其中一个提供自定义棋盘游戏,玩家可以在棋盘上决定草稿的初始位置。登记/> 为了实现这一点,我创建了一个名为CustomBoard的对象 因此,每当用户按下StartGame按钮并选中“Custom Game”选项时,它会激活内部类StartGameListener中的“mouseUp()”方法,并实例化一个CustomBoard对象并(应该)运行它。 /> 问题是,只要控件到达构造函数行:
CustomBoard custom_board_menu=new CustomBoard(display, board_size);
我在控制台中遇到了这个令人讨厌的错误;
(SWT:2806): GLib-GObject-CRITICAL **: g_closure_add_invalidate_notifier: assertion 'closure->n_inotifiers < CLOSURE_MAX_N_INOTIFIERS' failed
在无限循环中一遍又一遍地出现,程序当然会粉碎。
我应该(也许)提三件事:
1.每次出现不同的代码错误(这次是(SWT:2806),你可以看到)。
2.我有另一个 GUI对象,它可以从相同的“mouseUp()”方法运行得很好。
3.这是最奇怪的:当我独立于MainMenu实例化CustomBoard对象时,意思是:
public static void main(String[] args) {
CustomBoard cb=new CustomBoard(new Display(), 8);
cb.run();
}
它有效!
我试图谷歌,但找不到有关此错误的任何信息 任何帮助将不胜感激!