【发布时间】:2013-02-22 15:55:03
【问题描述】:
我在演示我的程序时基本上是通过在数字键盘上捣碎键来快速获取一些虚拟数据,但我发现偶尔会导致输入无效输入。这似乎是某种线程问题,但我对 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();
}
}
【问题讨论】:
-
你没有给我足够的信息。我不知道错误是什么,而且我没有完整的源代码(即使我倾向于阅读它)。我不知道您所说的“无效输入”是什么意思。你显然已经决定这几十行“相关”代码包含一些我可以指出并说“你的问题!”的东西。如果你真的需要帮助,你应该更加努力地为潜在的帮助者提供他们需要的东西。您也可以在标题中提及整体技术(Swing)。