目的:测试一个人在短时间内在屏幕上出现不同的图像时,按下键盘上空格键的反应时间。
一般:允许参考者输入姓名和年龄,记录时间和日期
要求:一开始,点击屏幕右下角的一个绿色按钮,当程序运行时使该按钮为红色,然后在屏幕中间显示一个4x4cm的红色正方形,持续1秒。接下来显示一个4x4x4蓝色三角形为80毫秒。然后再次显示正方形1秒。每次显示三角形时,这个人就点击键盘,程序就会计算这种情况发生的次数。以不规则的方式交替显示正方形和三角形。例如:先显示正方形,再显示三角形,再显示两次正方形,再显示三角形。另一次,在显示三角形之前显示正方形4次。不要在正方形和三角形之间的20毫秒内显示任何内容。记住要计算人们看到三角形并按下键盘上的空格键的次数。运行这个程序6分钟,然后显示最终的计数。
建一个text类继承JFrame,再建一个与类方法名相同的text方法,用于添加组件,调整组件位置
public class text extends JFrame{
...
public text() {
//JButton button= new JButton("开始");
button.setBackground(Color.green);
//放置按钮的面板
JPanel p=new JPanel();
p.setLayout(new FlowLayout(FlowLayout.RIGHT,20,400));
//输入框
s1=new JTextField();
s1.setBounds(80,40,200,20);
//输入框旁边的文字
l1=new JLabel("名字");
l1.setBounds(40,15,70,60);
s2=new JTextField();
s2.setBounds(80,100,200,20);
l2=new JLabel("年纪");
l2.setBounds(40,75,70,60);
//添加图形
la.setBounds(100, 150, 200, 200);
la1.setBounds(40, 100, 200, 100);
la2.setBounds(40, 300, 100, 100);
p.add(button);
p.add(button1);
con.add(s1);
con.add(s2);
con.add(l1);
con.add(l2);
con.add(la);
con.add(la1);
con.add(la2);
con.add(p);
frame.setSize(500,500);
this.setLocation(800,800);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
this.addListener();//监听方法
}
按钮监听设置
private void addListener() {
//对开始按钮监听
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(button.getBackground()==Color.green) {
button.setBackground(Color.red);
button.setText("结束");
button.setEnabled(false);
new change().start();
}
}
});
// 空格点击按钮次数监听
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 当鼠标点击的时候,就执行+1的操作
la2.setText("按空格" + (++clicks) + "次");
}
});
}
标签内图片的定时变化。获取系统时间,定时让进程进入长时间等待。
private class change extends Thread {
int i;
public void run() {
long start = System.currentTimeMillis();// 获取当前时间
long end = start + 6*60 * 1000;// 设置结束时间6分钟
while (true) {
//获取随机数
Random ra = new Random();
i = ra.nextInt(2);
if (i == 1) {
count++;
la.setIcon(icon);
// 蓝色三角形,持续80ms
try {
TimeUnit.MILLISECONDS.sleep(80);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
la.setIcon(icon1);
// 红色正方形,持续1s
try {
TimeUnit.MILLISECONDS.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 程序运行完,等待20ms
la.setIcon(null);// 标签内容为空
try {
TimeUnit.MILLISECONDS.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 线程终止
if (System.currentTimeMillis() > end) {
la.setIcon(null);
la1.setText("三角形出现" + count + "次");
button.setEnabled(true);// 重新启用按钮
button.setBackground(Color.GREEN);// 改颜色
button.setText("开始");// 文本
try {
TimeUnit.MINUTES.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
main方法
public static void main(String[] args) {
new text();
}
}
以上就是程序的大部分代码了,JFrame内组件定义部分过于简单未展示。