摆动,重复使用一个“屏幕”进行多次运行

时间:2013-07-26 08:04:55

标签: java swing jform

我必须开发一个Java swing应用程序,它应该进行心理学实验。

实验包括一个白色的屏幕,其中出现一个小图释,“站在那里”3秒然后消失。然后屏幕再次全白,这个人必须点击他认为表情符号的空间。之后,另一个表情符号出现在不同的空间中,整个过程重复多次。将有一个数据库用于保存原始坐标和人员点击的坐标。

我的问题是如何在一个窗口中发生这种情况?我尝试过使用多个JForms并且工作量太大,并且每次迭代都会打开不同的窗口。

3 个答案:

答案 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秒后调用此函数的计时器......

然后你必须检查鼠标点击坐标是否接近或者显示所示笑脸的边界...(请注意,所显示的笑脸将从所选坐标+宽度和高度显示)

我认为你可以解决剩下的问题了。 找一些我告诉你的东西的例子,并尝试自己做一些事情,从不期待一个有效的例子,否则你将不知道该怎么做......