根据用户输入从正在运行的JFrame开始运行方法的最佳/常用做法是什么?
方案 背景是我希望运行JFrame并附加条形码扫描器。这个条形码扫描器不会扫描预定义的(没有固定长度)条形码(带有特殊字符的字母数字),而是查找像*这样的特殊字符并开始操作。
问题 条形码的格式为:*名字*姓氏*出生年份。我想在每次JTextField的内容发生变化时运行我的“分析”方法,但我认为那是必要的工作。
让我们说这是扫描 * John * Doe * 1988 条形码扫描器中的字符“逐个”出现,这将导致13次不必要的“内容检查”。这就是我被困住的地方。我希望我的解决方案尽可能高效:)
注意: 是的,解决方案可能是让用户在扫描后,通过按钮或某个动作“确认他的输入”而不是“分析输入” - 但这是我想要避免的并且使其完全自动(并且有效)< / p>
您的方法或提示和技巧将如何取悦?
答案 0 :(得分:2)
SwingWorker
适用于此。当完整记录可用时,请阅读doInBackground()
和publish()
实施中的数据。然后,process()
的实现可以安全地更新事件派发线程上的视图组件模型。如此相关example所示,您可以cancel()
并根据需要重新启动工作人员。如果在某些经验确定的时间内没有输入,您可能还需要重置扫描状态,例如: 300毫秒。