0

我一直在寻找将 JavaFX 与 Swing JFrame 集成。我找到了很多文章,但找不到与我想要的匹配。我想将使用 Scene builder 创建的整个 fxml 文件集成到 JFrame 中。例如,这是我使用 Scene builder 创建的 fxml 文件的内容。

<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="617.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
  <children>
    <ImageView fitHeight="72.25" fitWidth="571.0" layoutX="15.0" layoutY="15.0" pickOnBounds="true" preserveRatio="false">
      <image>
        <Image url="file:/opt/JavaFXSceneBuilder1.1/app/fxml-128.png" />
      </image>
    </ImageView>
    <Pane layoutX="349.0" layoutY="96.0" prefHeight="109.0" prefWidth="237.0">
      <children>
        <Label layoutX="14.0" layoutY="14.0" text="Certificate no." />
        <TextField layoutX="119.0" layoutY="11.0" prefWidth="118.0" />
        <Label layoutX="14.0" layoutY="58.0" text="Date" />
        <TextField layoutX="119.0" layoutY="55.0" prefWidth="118.0" />
      </children>
    </Pane>
    <Pane layoutX="14.0" layoutY="96.0" prefHeight="109.0" prefWidth="327.0">
      <children>
        <Label layoutX="14.0" layoutY="14.0" text="Party Name" />
        <Label layoutX="17.0" layoutY="55.0" text="Party Address" />
        <TextField layoutX="118.0" layoutY="14.0" prefWidth="200.0" />
      </children>
    </Pane>
    <TextArea layoutX="132.0" layoutY="151.0" prefHeight="40.0" prefWidth="200.0" wrapText="true" />
    <TableView layoutX="22.0" layoutY="215.0" prefHeight="200.0" prefWidth="564.0">
      <columns>
        <TableColumn prefWidth="75.0" text="Sr. No." />
        <TableColumn maxWidth="5000.0" minWidth="10.0" prefWidth="247.0" text="Particular" />
        <TableColumn prefWidth="75.0" text="Qty." />
        <TableColumn prefWidth="75.0" text="Rate" />
        <TableColumn maxWidth="5000.0" minWidth="10.0" prefWidth="92.0" text="Amount" />
      </columns>
    </TableView>
    <Label layoutX="22.0" layoutY="428.0" prefHeight="152.0" prefWidth="309.9998779296875" text="a." />
    <Label layoutX="345.0" layoutY="428.0" text="Authorized Signature" />
  </children>
</AnchorPane>

有没有办法在我们加载 JFrame 时加载这个 fxml 代码,以便我们的 JFrame 包含 fxml 的内容。

4

1 回答 1

0

我找到了解决我的问题的方法。以下代码加载您提供的 fxml 文件。

Platform.runLater(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                Parent root = null;
                try {
                    root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
                    Scene scene = new Scene(root);
                    fxpanel.setScene(scene);
                } catch (Exception e) {
                    // TODO: handle exception
                    System.err.println("error : " + e.getMessage() + "cause : " + e.getCause() + "\n" + e.getStackTrace());
                }
            }
        });
于 2013-07-05T06:10:02.843 回答