在运行的GUI环境中使用Java运行方法的最佳实践

时间:2016-06-16 05:05:55

标签: java swing user-input jtextfield

根据用户输入从正在运行的JFrame开始运行方法的最佳/常用做法是什么?

方案 背景是我希望运行JFrame并附加条形码扫描器。这个条形码扫描器不会扫描预定义的(没有固定长度)条形码(带有特殊字符的字母数字),而是查找像*这样的特殊字符并开始操作。

问题 条形码的格式为:*名字*姓氏*出生年份。我想在每次JTextField的内容发生变化时运行我的“分析”方法,但我认为那是必要的工作。

让我们说这是扫描 * John * Doe * 1988 条形码扫描器中的字符“逐个”出现,这将导致13次不必要的“内容检查”。这就是我被困住的地方。我希望我的解决方案尽可能高效:)

注意: 是的,解决方案可能是让用户在扫描后,通过按钮或某个动作“确认他的输入”而不是“分析输入” - 但这是我想要避免的并且使其完全自动(并且有效)< / p>

您的方法或提示和技巧将如何取悦?

1 个答案:

答案 0 :(得分:2)

SwingWorker适用于此。当完整记录可用时,请阅读doInBackground()publish()实施中的数据。然后,process()的实现可以安全地更新事件派发线程上的视图组件模型。如此相关example所示,您可以cancel()并根据需要重新启动工作人员。如果在某些经验确定的时间内没有输入,您可能还需要重置扫描状态,例如: 300毫秒。