我正在研究一个项目,我需要从相机中读取条形码。我能够捕获图像并解码它们,但只剩下问题是我需要捕获并解码它们。进程工作直到用户停止它。 所以我能做到的就是这个
btnCapture = new JButton("Capture");
btnCapture.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// camera is already initialized and ready to use
// take image from webcam
image = webcam.getImage();
// convert the image to show it on a label
lblNewLabel.setIcon((imageCont.convertToImageIcon(image,lblNewLabel)));
}
});
btnCapture.setBounds(508, 151, 89, 23);
add(btnCapture);
这个过程工作正常,但我需要它不是一次工作,而是当用户按btnCapture时我不停地工作
while(true)
{
// camera is already initialized and ready to use
// take image from webcam
image = webcam.getImage();
// convert the image to show it on a label
lblNewLabel.setIcon((imageCont.convertToImageIcon(image,lblNewLabel)));
}
当我尝试这个时,这会冻结用户界面。请帮助我,我研究了它,并得到了一个线程的想法,但我无法做到。
答案 0 :(得分:1)
doInBackground
方法中执行长时间运行的代码while循环。这将在后台线程中运行此代码,并防止它冻结Swing事件线程。有关详情,请阅读Lesson: Concurrency in Swing。