# Swing in JavaFX einbinden



## JeromeC (15. Okt 2012)

Hey Leute,

wir arbeiten in einem Projekt mit JavaFX als grafische Oberfläche.
Ich nutze DSJ zum Einholen von Webcam-Bildern. Diese werden mir auf einem JPanel geliefert.
Jetzt würde ich dieses JPanel gerne in JavaFX einbinden, finde aber keine Möglichkeit.

Soetwas funktioniert leider nicht:

```
DSCapture graph = new DSCapture(DSFiltergraph.DD7, dsi[0][0], false, DSFilterInfo.doNotRender(), this);
BorderPane pane = new BorderPane();
pane.setCenter(graph.asComponent());
```

asComponent() liefert Folgendes: 





> returns either the canvas DSFiltergraph extends or a JPanel it renders into



Hat Jemand einen Ansatz, dieses Problem zu lösen? Wäre euch sehr dankbar, 
Grüße Jerome.


----------



## OSBI_Fan (15. Okt 2012)

Hallo JeromeC,

*1. JavaFX mit JFXPanel Komponente in Swing Anwendungen einbinden*

versucht mal folgendes bzw. werft mal einen kurzen Blick auf den folgenden Link:

http://www.sourcetalk.de/2012/files/2012/09/JavaFX-Wolfgang-Weigend.pdf

Hintergrund: Entwickler sind meist keine guten UI-Designer. Deshalb ist es gut UI-Design und Entwicklung zu trennen. JavaFX 2.0 ist mit dem Versprechen angetreten dies zu vereinfachen. Aber wo sind die Tools?
*
Gerrit Grunwald, Anton Epple >> Folien der Source Talk Tage 2012 Die meisten Folien sind jetzt online:*

Präsentationen | Source Talk Tage 2012

*2. Ressourcen:*

*Downloads:* javafx
*OpenJFX:* OpenJDK: OpenJFX Project
*Oracle Premier Support:* Premier Support for Software
*Blogs:*
- http://blogs.oracle.com/javafx
- JavaFX News, Demos and Insight // FX Experience
*OTN Forum:* http://forums.oracle.com/forums/forum.jspa?forumID=1385
*Twitter:* @javafx4you

*3. Beispiel:*

```
java.awt.Component
java.awt.Container
private static void initFX(JFXPanel fxPanel) {
// This method is invoked on JavaFX thread
Scene scene = createScene();
fxPanel.setScene(scene);
}
JavaFX mit JFXPanel Komponente in 
Swing Anwendungen einbinden
public class Test {
private static void initAndShowGUI() {
// This method is invoked on Swing thread
JFrame frame = new JFrame("FX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
13 Copyright © 2012 Oracle and/or its affiliates. All rights reserved.
javax.swing.JComponent
javafx.embed.swing.JFXPanel
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI();
}
});
}
}
frame.add(fxPanel);
frame.setVisible(true);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
});
```

*4. Hello World in JavaFX Programming in Java*


```
public class JavaFXExample extends Application {
@Override public void start(Stage stage){
Scene scene = new Scene(
LabelBuilder.create()
.text("Hello World!")
.layoutX(25)
22 Copyright © 2012 Oracle and/or its affiliates. All rights reserved.
.build());
stage.setTitle("Welcome to JavaFX!");
stage.setScene(scene);
stage.show();    
}
public static void main(String[] args) { 
launch(args); 
}
}
```
Ich hoffe, das hilft Dir/Euch erst mal weiter.

*P.S. Wäre schön, wenn Ihr hier mal Euren Ansatz/Erfahrung postet. Der Bedarf in der Community ist sicher riesig!*

Grüße,

OSBI_Fan

OSBI = Open Source Business Intelligence


----------



## Paddelpirat (16. Okt 2012)

OSBI_Fan hat gesagt.:


> Aber wo sind die Tools?



Hier z.B.: JavaFX Tools

Wobei ich selbst die normale JavaFX 2.2 API bevorzuge. Aber ich habe auch bei Swing keine GUI-Builder benutzt, außer um mal schnell was auszuprobieren...

Ansonsten kann man, wie du geschrieben hast JavaFX in Swing einbetten. Umgekehrt Swing in JavaFX einbetten geht nicht. Ist auch nicht gewollt, da Oracle möchte, dass die Leute auf JavaFX umsteigen.


----------



## JeromeC (17. Okt 2012)

Um überhaupt Webcam-Bilder in JavaFX einlesen zu können, haben wir uns von DSJ distanziert und es mit anderen Mitteln versucht. Folgende Lösung ist dabei herausgekommen:



> 1. OpenCV 2.42 extrahieren. Ich habe es unter "C:\Program Files\OpenCV"extrahiert
> 2. Zur Systemumgebungsvariable
> C:\Program Files\OpenCV\build\common\tbb\intel64\vc10;C:\Program Files\OpenCV\build\x64\vc10\bin
> hinzufügen. Das entscheidende ist tbb.dll in build\common\tbb\intel64\vc10
> ...



Ich danke meinen Vorredner für die Informationen und Tipps. Falls ihr noch andere Ansätze habt, wäre ich sehr erfreut sie zu erfahren.

Liebe Grüße, Jerome.

P.S.: Die hier Angegebe Lösung ist für x64-Plattformen.
P.P.S.: Habe gerade keine Möglichkeit gefunden, dem Thema einen Untertitel hinzuzufügen, aber sinnvoll wäre etwas zu ergänzen wie: "Webcam-Capture in JavaFX".


----------

