我通过基本上在数字键盘上捣碎键以非常快速地获取一些虚拟数据来演示我的程序,并发现偶尔会导致输入无效输入。这似乎是某种线程问题,但我对 Swing 事件的理解是它们基本上是从同一个线程按顺序触发的。我没有明确地创建我自己的任何线程,但我正在使用paintComponent(Graphics g)
. 大多数按键最终都会触发repaint()
堆栈深处。这会导致我的问题吗?为什么?如果是这样,知道如何解决它吗?如果没有,你知道它还能是什么吗?
另外,有谁知道如何为此进行自动化测试?相关的事件处理程序如下所示。
public void keyTyped(KeyEvent e)
{
if (e.getKeyChar() == myKeyChar)
runPrimaryFunction(); // Does some calculations and triggers a repaint
}
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == myKeyCode)
runPrimaryFunction();
}
/********* Another class listening to the same JFrame ********/
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_UP)
{
scrollUp();
repaint();
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN)
{
scrollDown();
repaint();
}
}