I like old Java applets. But because I really like the way JFX works, I want write some games using it (or even game making system, who knows?), but I'd like to be able to post them on my website. How would one go about doing this?
Is it possible to make JavaFX web applet?
Yes, you should be able to embed JavaFX in your web page:
http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/deployment_toolkit.html#BABJHEJA
http://docs.oracle.com/javase/8/javase-clienttechnologies.htm
Wouldn't hurt to show an example. What if links don't function? –
Groundmass
Yes, you can embed a JavaFX GUI into the Swing-based JApplet. You can do this by using the JFXPanel - it is essentially an adaptor between Swing and JavaFX panels.
Complete example:
The FXApplet
class that sets-up the JavaFX GUI:
public class FXApplet extends JApplet {
protected Scene scene;
protected Group root;
@Override
public final void init() { // This method is invoked when applet is loaded
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initSwing();
}
});
}
private void initSwing() { // This method is invoked on Swing thread
final JFXPanel fxPanel = new JFXPanel();
add(fxPanel);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
initApplet();
}
});
}
private void initFX(JFXPanel fxPanel) { // This method is invoked on JavaFX thread
root = new Group();
scene = new Scene(root);
fxPanel.setScene(scene);
}
public void initApplet() {
// Add custom initialization code here
}
}
And a test implementation for it:
public class MyFXApplet extends FXApplet {
// protected fields scene & root are available
@Override
public void initApplet() {
// this method is called once applet has been loaded & JavaFX has been set-up
Label label = new Label("Hello World!");
root.getChildren().add(label);
Rectangle r = new Rectangle(25,25,250,250);
r.setFill(Color.BLUE);
root.getChildren().add(r);
}
}
Alternatively, you can use the FXApplet
gist, which also includes some documentation.
© 2022 - 2024 — McMap. All rights reserved.