java的gui编程,高手来救啊

2025-03-06 11:18:56
推荐回答(2个)
回答1:

监听的目前没有啥好的想法
关于按键的有点,给你分享一下,理解不对的话,见谅啊。

你的问题现在是,先按住上方向键,坦克向上走,按住上键,又按住左键了,坦克向左走,此时放开左键了,坦克没有继续向上走,而需要你重新按向上键。

如果我理解对了,你继续看,不对就算了、、、
如果是上面的问题,你程序的处理应该是监听到Key按下事件,然后根据Key的值,向不同的方向移动,监听到Key放开事件,就停止移动

如果想继续移动,可以通过程序去判断:
1:在监听类,中定义一个Map 保存按下的Key
2:监听到Key按下事件,把Key保存到Map中,并向改方向移动。
3:监听到Key放开事件,把Key从Map中移除,并判断Map是否为空,为空停止移动,如果不为空,获取Map中的Key值,继续向Key所指向方向移动

注:这个方法只支持最多按两个键,多了的话,比如现在按住3个键,放开一个了,不处理的话,因为Map不是排序的,随便获取一个Key的话,移动的方向可能不是自己想要的,如果要支持多键的,可以使用LinkedMap,他可以保存按键的保存顺序,比如按键的顺序为a,b,c 放开c的时候,迭代Map,第一个一定是b,你可以向b方向移动,放开b的时候,迭代Map,获取就是a了

回答2:

分没有。。。
主要听不懂lz说什么。。。
问题在简短点??