我在 java 中使用 Webcam Capture API 来访问我的网络摄像头。Webcam Capture API 是基于 Swing 构建的,我知道,但是我想将 Webcam Swing 类与我的 JavaFX 类结合起来。JavaFX 类在屏幕上显示一个矩形。我的目标是:我运行在屏幕上显示矩形的 JavaFX 类。在某些时候(例如鼠标点击)我想启动网络摄像头。网络摄像头设置为查看屏幕,然后应该对矩形的图像执行某些操作。
JavaFX 类:
public class JavaFXDisplay extends Application {
@Override
public void start(Stage primaryStage) {
WebcamCapture wc = new WebcamCapture();
StackPane root = new StackPane();
Rectangle rectangle = new Rectangle();
rectangle.setWidth(500);
rectangle.setHeight(500);
Scene scene = new Scene(root, 1000, 1000);
root.getChildren().addAll(rectangle);
primaryStage.setScene(scene);
primaryStage.show();
scene.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
wc.doSomething();
}
});
}
public static void main(String[] args) {
launch(args);
}
}
摇摆班:
public class WebcamCapture extends JFrame implements Runnable, ThreadFactory {
private static final long serialVersionUID = 6441489157408381878L;
private Executor executor = Executors.newSingleThreadExecutor(this);
private Webcam webcam = null;
private WebcamPanel panel = null;
private JTextArea textarea = null;
public WebcamCapture() {
super();
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension size = WebcamResolution.QVGA.getSize();
webcam = Webcam.getWebcams().get(0);
webcam.setViewSize(size);
panel = new WebcamPanel(webcam);
panel.setPreferredSize(size);
textarea = new JTextArea();
textarea.setEditable(false);
textarea.setPreferredSize(size);
add(panel);
add(textarea);
pack();
setVisible(true);
}
public void doSomething() {
executor.execute(this);
}
@Override
public void run() {
do {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
BufferedImage image = null;
if (webcam.isOpen()) {
if ((image = webcam.getImage()) == null) {
continue;
}
doSomeStuff;
}
} while (true);
}
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r, "example-runner");
t.setDaemon(true);
return t;
}
public static void main(String[] args) {
new WebcamCapture();
}
}
但是我的 JavaFX 类没有启动/显示。我的代码有什么问题?