【高分跪求】如何让两个互相重叠的JPanel同时监听到一次鼠标点击事件?
自己编了一个文字游戏,上面有两个相互完全重叠的JPANEL(一个背景,一个文字框,两个Jpanel种类不相同),给两个都加了MouseListener(触发的事件不同,因...
自己编了一个文字游戏,上面有两个相互完全重叠的JPANEL(一个背景,一个文字框,两个Jpanel种类不相同),给两个都加了MouseListener(触发的事件不同,因为两个变化不一样嘛,文本框部分鼠标点击要切换剧情文字,背景框部分要在指定的位置切换背景),但是结果鼠标点击只有上面那层JPanel能触发鼠标点击事件,下面那层没办法,跪求大牛正解!因为是JAVA课程设计,分全给出去了!答得好的再给100分!
指定的位置→指定的剧情位置 展开
指定的位置→指定的剧情位置 展开
4个回答
展开全部
你看一下我说的对不对。
底下的Panel是显示背景图片的。
上面的panel是显示一些文字的。现在它应该是透明的,这样看起来是一体的。
现在只能点到上面的Panel,所以只有上面的能发生变化,而下边的变不了是吧。
如果是这样,有两个办法来解决。
1.你显示文件的部分,可以是JLabel,这个也是可以变成透明的。这样放在背景的panel 上,这个panel实现鼠标的侦听事件。这样在一个类中就好处理了。
2.如果你不想改变现有的方式,那么你就要写一个侦听器类,把两个panel的实例都传过去。
比如在构造方法中,是两个panel的参数。总之就是让一个侦听器,可以处理两个panel
这样,你就可以根据文字的变化来改变背景。
两个JPanel使用一个侦听器,可以,但你不可能做到两个同时触发。只能是同时控制两个实例。
你的思路想差了。
底下的Panel是显示背景图片的。
上面的panel是显示一些文字的。现在它应该是透明的,这样看起来是一体的。
现在只能点到上面的Panel,所以只有上面的能发生变化,而下边的变不了是吧。
如果是这样,有两个办法来解决。
1.你显示文件的部分,可以是JLabel,这个也是可以变成透明的。这样放在背景的panel 上,这个panel实现鼠标的侦听事件。这样在一个类中就好处理了。
2.如果你不想改变现有的方式,那么你就要写一个侦听器类,把两个panel的实例都传过去。
比如在构造方法中,是两个panel的参数。总之就是让一个侦听器,可以处理两个panel
这样,你就可以根据文字的变化来改变背景。
两个JPanel使用一个侦听器,可以,但你不可能做到两个同时触发。只能是同时控制两个实例。
你的思路想差了。
展开全部
假设panel1的鼠标点击事件调用函数:click1(),
panel2的鼠标点击事件调用函数:click2();
同时假设panel2在上层,那么你在写MouseListener的时候这样写:
panel2.addMouseListener(new MouseListener(){
public void mouseClick(Event e){
//panel1事件
click1();
//panel2事件
click2();
}
});
也就是说无论触发哪一个panel的鼠标点击事件,你都调用一下那那两个panel对应的click处理函数,上面的代码不一定准确,只是表达个思想,你看着改吧。
panel2的鼠标点击事件调用函数:click2();
同时假设panel2在上层,那么你在写MouseListener的时候这样写:
panel2.addMouseListener(new MouseListener(){
public void mouseClick(Event e){
//panel1事件
click1();
//panel2事件
click2();
}
});
也就是说无论触发哪一个panel的鼠标点击事件,你都调用一下那那两个panel对应的click处理函数,上面的代码不一定准确,只是表达个思想,你看着改吧。
追问
我想让鼠标触发的操作全都是是诸如panel1.showImage()、panel2.repaint()一类的类内方法,这就导致了点击监视器无论放在哪里都够不到另一个类的方法……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能再上层JPANEL中设置关于坐标的鼠标监听器吗,靠坐标来判断是点到剧情文字还是背景?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可不可以用进程,设置一个面板为后台进程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询