/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package dk.brandsoft.BrowserPJC; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.*; import javafx.collections.Sequence; import javafx.embed.swing.JFXPanel; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; import javafx.stage.Stage; import javafx.application.Platform; import javax.swing.*; import com.sun.javafx.application.PlatformImpl; import java.io.Serializable; /** * SwingFXWebView */ public class Browser extends JPanel { private Stage stage; private WebView browser; private JFXPanel jfxPanel; private JButton swingButton; private WebEngine webEngine; private JTextField urlTextField; public Browser(){ initComponents(); } public static void main(String ...args){ SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } final JFrame frame = new JFrame(); frame.getContentPane().add(new Browser()); frame.setMinimumSize(new Dimension(640, 480)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } private void initComponents(){ jfxPanel = new JFXPanel(); urlTextField = new JTextField(); createScene(); setLayout(new BorderLayout()); add(urlTextField, BorderLayout.NORTH); add(jfxPanel, BorderLayout.CENTER); swingButton = new JButton(); swingButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { webEngine.reload(); } }); swingButton.setText("Reload"); add(swingButton, BorderLayout.SOUTH); urlTextField.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { webEngine.setUrl(urlTextField.getText()); } } }); } /** * createScene * * Note: Key is that Scene needs to be created and run on "FX user thread" * NOT on the AWT-EventQueue Thread * */ private void createScene() { PlatformImpl.startup(new Runnable() { public void run() { stage = new Stage(); stage.setResizable(true); stage.setTitle("Hello Java FX"); stage.setResizable(false); Group root = new Group(); Scene scene = new Scene(root,80,20); stage.setScene(scene); //String url = "http://www.webstandards.org/files/acid2/test.html" ; //urlTextField.setText(url); webEngine = new WebEngine(); browser = new WebView(webEngine); Sequence children = root.getChildren(); children.add(browser); jfxPanel.setScene(scene); /* frame.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { stage.sizeToScene(scene); } }); */ } }); } public void setURL(String url) { webEngine.setUrl(url); } public String getURL() { return webEngine.getUrl(); } }