package test; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.Panel; import java.util.Date; import javax.swing.JRootPane; import javafx.embed.swing.JFXPanel; import javafx.embed.swt.FXCanvas; import javafx.scene.Scene; import javafx.scene.control.TextField; import javafx.scene.layout.BorderPane; import org.eclipse.swt.SWT; import org.eclipse.swt.awt.SWT_AWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class TestSWT { public static void main(String[] args) { Display d = new Display(); Shell s = new Shell(); GridLayout l = new GridLayout(2,true); s.setLayout(l); FXCanvas canvas = new FXCanvas(s, SWT.NONE); canvas.setLayoutData(new GridData(GridData.FILL_BOTH)); Composite embedSwing = new Composite(s, SWT.EMBEDDED); embedSwing.setLayoutData(new GridData(GridData.FILL_BOTH)); Frame frame = SWT_AWT.new_Frame(embedSwing); Panel panel = new Panel(new BorderLayout()) { /** * */ private static final long serialVersionUID = 1L; public void update(java.awt.Graphics g) { /* Do not erase the background */ paint(g); } }; frame.add(panel); JRootPane root = new JRootPane(); panel.add(root); java.awt.Container contentPane = root.getContentPane(); final JFXPanel jfxPanel = new JFXPanel(); contentPane.setLayout(new BorderLayout()); contentPane.add(jfxPanel); final BorderPane swtContainer = new BorderPane(); Scene swtScene = new Scene(swtContainer); canvas.setScene(swtScene); final BorderPane swingContainer = new BorderPane(); Scene swingScene = new Scene(swingContainer); jfxPanel.setScene(swingScene); Button b = new Button(s, SWT.PUSH); b.setText("Reload Content SWT"); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { swtContainer.getChildren().clear(); swtContainer.setTop(new TextField(new Date().toString())); } }); b = new Button(s, SWT.PUSH); b.setText("Reload Content Swing"); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { swingContainer.getChildren().clear(); swingContainer.setTop(new TextField(new Date().toString())); } }); s.open(); while( ! s.isDisposed() ) { if( ! d.readAndDispatch() ) { d.sleep(); } } d.dispose(); } }