我必须开发一个Java swing应用程序,该应用程序应该执行心理实验。
实验由一个白色屏幕组成,屏幕上出现一个小表情符号,"站在那里"3秒钟,然后消失。然后屏幕又变白了,用户必须点击他认为表情符号所在的空间。之后,另一个表情符号出现在不同的空间,整个过程重复多次。将有一个数据库用于保存原始坐标和用户点击的坐标。
我的问题是,这将如何在一个窗口中发生?我尝试过多个JForms,但工作量太大,而且它为每次迭代打开了不同的窗口。
从开始
- 使用Swing创建GUI
- 执行自定义绘画
- Swing中的并发
- 如何编写鼠标侦听器
从JPanel
开始。这是你所有工作的地方。您可以创建一个JFrame
的实例并将该组件添加到其中
当用户准备好后,您将开始一个循环。这将从数据库加载详细信息,启动javax.swing.Timer
并请求重新绘制组件(以便显示图像)
当计时器触发时,应重置显示(空白)。
当用户单击组件(鼠标侦听器将检测到)时,您可以记录鼠标点并开始新的循环。
以下是操作步骤。您需要创建一个扩展JPanel
并覆盖paintComponent
的类,以便在适当的位置绘制图像。构造函数还应该添加一个鼠标侦听器,该侦听器可以检测到鼠标在适当区域的点击,更新数据,并调用repaint()
。至于在指定时间后隐藏表情符号,请使用摆动Timer
。
现在,我不打算举一个例子,因为我们不会为你做堆栈溢出的作业。
我的推荐:
使您的窗口成为JPanel并覆盖绘制方法
public class MyPanel extends JPanel {
public void paint(Graphics g) {
// do your painting here
}
}
首先确保从Jpanel上擦除所有东西(从绘制方法)接下来在paint方法中显示表情符号图像(搜索java swing paint图像…)但前提是表情符号数据存在(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秒后调用此函数。。。
然后,您必须检查鼠标单击坐标是否接近或在显示的笑脸的范围内。。。(请注意,显示的笑脸将从选定的坐标+宽度和高度显示)
我认为你可以解决剩下的问题。为我告诉你的东西找例子,试着自己做一些事情,永远不要指望有一个有效的例子,否则你什么都不知道怎么做。。。