我必须开发一个Java swing应用程序,它应该进行心理学实验。
实验包括一个白色的屏幕,其中出现一个小图释,“站在那里”3秒然后消失。然后屏幕再次全白,这个人必须点击他认为表情符号的空间。之后,另一个表情符号出现在不同的空间中,整个过程重复多次。将有一个数据库用于保存原始坐标和人员点击的坐标。
我的问题是如何在一个窗口中发生这种情况?我尝试过使用多个JForms并且工作量太大,并且每次迭代都会打开不同的窗口。
答案 0 :(得分:3)
从
开始从JPanel
开始。这是您完成所有工作的地方。您可以创建JFrame
的实例并将此组件添加到其中。
当用户准备好时,您将开始一个循环。这将加载数据库中的详细信息,启动javax.swing.Timer
并请求重新绘制组件(因此它可以显示图像)
当计时器触发时,它应该重置显示(空白)。
当用户单击组件(鼠标侦听器将检测到该组件)时,您可以记录鼠标点并开始新的循环。
答案 1 :(得分:2)
这是做什么的。您需要创建一个扩展JPanel
并覆盖paintComponent
的类,以在适当的位置绘制图像。构造函数还应添加一个鼠标侦听器,可以检测相应区域中的鼠标单击,更新数据并调用repaint()
。至于在指定时间后隐藏表情符号,请使用挥杆Timer
。
现在,我不打算举个例子,因为我们不会在堆栈溢出时为你做功课。
答案 2 :(得分:0)
我的建议:
使您的窗口成为JPanel并覆盖绘制方法
public class MyPanel extends JPanel {
public void paint(Graphics g) {
// do your painting here
}
}
首先确保从Jpanel擦除所有内容(来自paint方法) 接下来在paint方法中显示表情符号图像(搜索java swing paint image ...) 但只有表情数据存在(coordiantes)。
接下来制作一个能够切换表情符号坐标的函数
toggleEmoticon(){
if(emoticon.x != -1 && emoticon.y != -1){
emoticon.x=-1;
emoticon.y=-1;
}
else{
emoticon.x = random() //between 0 and panel width
emoticon.y = random() //between 0 and panel height
}
制作一个在x秒后调用此函数的计时器......
然后你必须检查鼠标点击坐标是否接近或者显示所示笑脸的边界...(请注意,所显示的笑脸将从所选坐标+宽度和高度显示)
我认为你可以解决剩下的问题了。 找一些我告诉你的东西的例子,并尝试自己做一些事情,从不期待一个有效的例子,否则你将不知道该怎么做......