0

I have a Java applet:

public abstract class FXApplet extends JApplet {

    /**
     * Initializes a Swing thread
     */
    @Override
    public void init() {
        SwingUtilities.invokeLater(this::initSwing);
    }

    /**
     * Initializes a JavaFX thread
     */
    private void initSwing() {
        JFXPanel panel = new JFXPanel();
        add(panel);

        Platform.runLater(() -> initFX(panel));
    }

    /**
     * Here u can use JavaFX components
     * @param panel Root panel
     */
    abstract protected void initFX(JFXPanel panel);
}

public class FSSApplet extends FXApplet {

    @Override
    protected void initFX(JFXPanel panel) {

        try {
            ClassLoader classLoader = getClass().getClassLoader();
            URL res = classLoader.getResource("views/fss.fxml");
            Parent root = FXMLLoader.load(res);
            Scene scene = new Scene(root);
            panel.setScene(scene);
        } catch (IOException e) {
            e.printStackTrace();
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Ошибка");
            alert.setHeaderText("Критическая ошибка");
            alert.setContentText("Неудалось загрузить форму");

            alert.showAndWait();
        }
    }
}

But when I am running my applet in the browser it shows a gray box only. But if I use Swing components the browser shows all perfectly.
My FXML form:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>

<GridPane maxHeight="-Infinity" maxWidth="-Infinity"
          minHeight="-Infinity" minWidth="-Infinity"
          prefHeight="400.0" prefWidth="600.0"
          fx:controller="com.contedevel.fss.controller.FSSController"
          xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1">
  <columnConstraints>
    <ColumnConstraints hgrow="NEVER" minWidth="200.0" prefWidth="200.0" />
    <ColumnConstraints hgrow="ALWAYS" minWidth="10.0" prefWidth="100.0" />
  </columnConstraints>
  <rowConstraints>
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="ALWAYS" />
  </rowConstraints>
   <children>
      <VBox prefHeight="200.0" prefWidth="100.0">
         <children>
            <Label text="Label" fx:id="txtResult"/>
            <Button mnemonicParsing="false" onAction="#handleFindAction" text="Find" />
         </children>
      </VBox>
   </children>
</GridPane>

HTML:

<div class="page">
    <applet code="com.contedevel.fss.applet.FSSApplet.class" width="100%" height="100%">Загрузка аплета</applet>
</div>

In short JavaFX doesn't work and doesn't show any errors. Where can the problem be in?

P.S. I use Java 8 and old Firefox browser. It supports applets.

Denis Sologub
  • 7,277
  • 11
  • 56
  • 123
  • 2
    *"Where can the problem be in?"* - You're using a applet - Applet's a deprecated, they are no longer support by browsers, Oracle or the community. One reason why running JavaFX in a browser was abandoned was due to HTML5 - which killed both JavaFX and Flash – MadProgrammer Jun 23 '18 at 22:26
  • Possible duplicate [JavaFX - can it really be deployed in a browser?](https://stackoverflow.com/questions/19102000/javafx-can-it-really-be-deployed-in-a-browser) – MadProgrammer Jun 23 '18 at 22:26
  • It supports by my browser. I know that modern browsers don't support it and Java 9 is too. The problem is not in browser, without JavaFX, only Swing, all works – Denis Sologub Jun 23 '18 at 22:30
  • Applet executes because I can see a Java process in the browser and it looks like a window of the applet but without form's components... Just gray box is. – Denis Sologub Jun 23 '18 at 22:34
  • You don’t need Applets to deploy JavaFX in browsers - read the duplicate – MadProgrammer Jun 23 '18 at 22:57

0 Answers0