package test; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.Panel; import java.util.Date; import javafx.embed.swing.JFXPanel; import javafx.embed.swt.FXCanvas; import javafx.scene.Scene; import javafx.scene.control.TextField; import javafx.scene.layout.FlowPane; import javax.swing.JRootPane; 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(4,true); s.setLayout(l); FXCanvas canvas = new FXCanvas(s, SWT.NONE); canvas.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true,2,1)); Composite embedSwing = new Composite(s, SWT.EMBEDDED); embedSwing.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true,2,1)); 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 FlowPane swtContainer = new FlowPane(); Scene swtScene = new Scene(swtContainer); canvas.setScene(swtScene); final FlowPane swingContainer = new FlowPane(); 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.getChildren().add(new TextField(new Date().toString())); } }); b = new Button(s, SWT.PUSH); b.setText("Append Content SWT"); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { swtContainer.getChildren().add(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.getChildren().add(new TextField(new Date().toString())); } }); b = new Button(s, SWT.PUSH); b.setText("Append Content Swing"); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { swingContainer.getChildren().add(new TextField(new Date().toString())); } }); s.open(); while( ! s.isDisposed() ) { if( ! d.readAndDispatch() ) { d.sleep(); } } d.dispose(); } }