1

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

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

我的问题是这将如何在一个窗口中发生?我已经尝试了多个 JForms,它的工作量太大了,每次迭代都会打开不同的窗口。

4

3 回答 3

3

从...开始

从类似JPanel. 这是您完成所有工作的地方。您可以创建 a 的实例JFrame并将此组件添加到其中。

当用户准备好时,您将开始一个循环。这将从数据库中加载详细信息,启动javax.swing.Timer并请求重新绘制组件(以便它可以显示图像)

当定时器触发时,它应该重置显示(空白)。

当用户点击组件时(会被鼠标监听器检测到),您可以记录鼠标点并开始新的循环。

于 2013-07-26T08:15:33.127 回答
2

这是该怎么做。您需要创建一个扩展JPanel和覆盖的类paintComponent以在适当的位置绘制图像。构造函数还应该添加一个鼠标监听器,它可以检测到相应区域的鼠标点击,更新数据,并调用repaint(). 至于在指定时间后隐藏表情符号,请使用 swing Timer

现在,我不打算举一个例子,因为我们不会在堆栈溢出时为你做作业。

于 2013-07-26T08:08:46.553 回答
0

我的建议:

使您的窗口成为 JPanel 并覆盖paint方法

public class MyPanel extends JPanel {
    public void paint(Graphics g) {
    // do your painting here
    }
}

首先确保从 Jpanel 中擦除所有内容(来自 paint 方法) 接下来在 paint 方法中显示表情图像(搜索 java swing paint image...)但前提是表情数据存在(坐标)。

接下来制作一个将切换表情坐标的功能

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 秒后调用此函数...

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

我认为你可以解决剩下的问题。找到我告诉你的东西的例子并尝试自己做某事,永远不要期望一个有效的例子,否则你将不知道如何做任何事情......

于 2013-07-26T08:16:54.633 回答