fxml集成中的java javafx webcapture zxing
package webcamfx;
public class FXMLDocumentController implements Initializable, Runnable, ThreadFactory {
private Webcam webcam = Webcam.getDefault();
private WebcamPanel webcamPanel = new WebcamPanel(webcam, false);
private Executor executor = Executors.newSingleThreadExecutor(this);
@FXML
private SwingNode swingnode;
private TextField textfield;
//@Override
public void initialize(URL url, ResourceBundle rb) {
//super();
//SwingNode swingnode = new SwingNode();
swingnode.setContent(webcamPanel);
webcamPanel.start();
executor.execute(this);
}
@Override
public void run() {
do {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
Result result = null;
BufferedImage image = null;
if (webcam.isOpen()) {
if ((image = webcam.getImage()) == null) {
continue;
}
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
try {
result = new MultiFormatReader().decode(bitmap);
} catch (NotFoundException e) {
// fall thru, it means there is no QR code in image
}
}
if (result != null) {
System.out.println(result.getText());
textfield.setText(result.getText());
}
} while (true);
}
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r, "example-runner");
t.setDaemon(true);
return t;
}
}
运行和输出:
线程“示例运行程序”java中出现异常。lang.NullPointerException 在webcamfx上。FXMLDocumentController。运行(FXMLDocumentController.java:90) 在爪哇。util。同时发生的线程池执行器。runWorker(ThreadPoolExecutor.java:1142) 在爪哇。util。同时发生的线程池执行器$Worker。运行(ThreadPoolExecutor.java:617) 在爪哇。朗。丝线。运行(Thread.java:745)
这一行90:textfield。setText(result.getText())强>
共 (0) 个答案