所以,我正在创建一个反应时间游戏,显示一个蓝色的球,一旦你们看到那个蓝色的球,你们按下向上箭头键,当它变成蓝色时,你们的反应时间。然而,我在创建计时器时遇到了麻烦。我希望计时器在球真正变蓝时启动,并希望计时器在用户按下向上箭头时结束。”
这是一张我希望在球变蓝之前比赛的画面
这就是我希望它变蓝后的样子,有反应时间
这是我的密码。到目前为止,一切都很好,这只是计时器的一部分,我需要帮助。我想创建一个计时器,只要球变成蓝色,并希望计时器结束,一旦用户按下向上箭头,但我只是不知道如何。。。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.Timer;
public class Game extends JPanel implements KeyListener
{
private JLabel start, main, time;
private ImageIcon constant, react;
final int width = 600;
final int height = 600;
private Timer replace;
private Random random;
private int randTime;
private long startTime;
private long stopTime;
private long reactionTime;
public Game()
{
addKeyListener(this);
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
setPreferredSize(new Dimension(width, height));
setBackground(Color.black);
start = new JLabel("Click Up Arrow when you see a blue ball");
start.setForeground(Color.white);
start.setAlignmentX(Component.CENTER_ALIGNMENT);
add(start);
constant = new ImageIcon("constantCircle.png");
main = new JLabel(constant);
main.setAlignmentX(Component.CENTER_ALIGNMENT);
randomTime();
replace = new Timer(randTime, timeListener);
replace.setRepeats(false);
replace.start();
timeTracker();
reactionTime = stopTime - startTime;
time = new JLabel("" + reactionTime);
add(time);
add(main);
}
public void randomTime()
{
random = new Random();
int max = 8000;
randTime = random.nextInt(max);
}
ActionListener timeListener = new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
react = new ImageIcon("reactCircle.png");
main.setIcon(react);
}
};
public void timeTracker()
{
if (replace.isRunning())
{
startTime = System.currentTimeMillis();
}
}
public void keyPressed (KeyEvent e)
{
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE)
{
stopTime = System.currentTimeMillis();
}
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped (KeyEvent e)
{
}
}
不需要计时器。计时器用于在指定的时间间隔生成事件。你不知道用户什么时候会做出反应,所以你不能使用计时器。
在您的情况下,您需要做的是:
>
然后,当按下“Up”键时,需要设置“stopTime”变量。此时,您将计算“反应时间”。
问题是您的KeyListener不工作,因为KeyEvent只被调度到具有焦点的组件,而默认情况下JPanel没有焦点。
解决方案是使用键绑定,而不是键侦听器。即使面板没有焦点,也可以将键绑定配置为接收KeyEvent。
有关更多信息,请阅读Swing教程中有关如何使用键绑定的部分。这个网站上还有很多使用键绑定的示例。
我有java REST应用程序,我希望通过keycloak保护。我做了一些测试,应用程序与keycloak servlet过滤器配合良好,但我在Spring Security适配器方面遇到了问题。 钥匙斗篷。json(删除值) 可见,我只需要承载授权,若请求包含有效令牌,那个么若不是http 401,那个么我希望是http 200。我使用了以下xml配置: 到底发生了什么?请求经过身份验证,但成功
我只是写了一些小代码试图让我的KeyEvent管理器工作。 正如你所见,我创建了一个JFrame并添加了gameComponent,它是Game类的一个对象。我将JPanel设置为可调焦,并请求调焦。然后将名为TAdapter的KeyAdapter设置为KeyAdapter。您可以在代码的最底层看到该类,它扩展了KeyAdapter和方法keyPressed()。 我告诉程序在按下一个键时将“按下
适配器是一种特殊的库,它有一个父类和任意数量的子类。子类可以访问其父类元素,但不能访问其兄弟类的元素。在你的控制器中,适配器为类库提供了一种优雅的语法,因此类库会就此获益甚至会需要分解成离散的类。 适配器的源文件存放在system/libraries 目录下, 命名一个和类名字相同的文件夹,文件夹下存放该类。同时在该文件夹中,有一个子文件夹叫做 drivers在其中包含了所有的子类。 要使用一个适
我有一个和这里完全相同的问题:spring boot-KeyCloak指向403被禁止但是,这个问题的答案说角色可能没有在KeyCloak服务器中配置或分配,这就是我的情况。 使用keycloak服务器对用户进行身份验证的一个有角度的前端应用程序。 然后将接收到的令牌传递给使用keycloak-spring-boot-2-starter使用spring-boot开发的rest服务。 这就是问题所在
1. 适配器(Adapter) Intent 把一个类接口转换成另一个用户需要的接口。 Class Diagram Implementation 鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。 要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充
问题内容: 马克·墨菲(Mark Murphy)在他的博客上很好地说明了应将哪些信息排除在公共存储库之外。密钥材料(例如用于各种服务的OAuth密钥或API密钥)就是一个很好的例子。 有问题的应用程序将是移动android应用程序,因此有人对其进行反编译以获取秘密密钥不在此问题范围内。 如何配置公共CI实例(例如cloudbees)上的构建作业,以使机密不泄漏到构建日志或编译目录中?我的主要目的是