2013-07-05 74 views
0

我一直在尋找集成JavaFX和Swing JFrame的方法。我發現了很多文章,但找不到我想要的內容。我想將使用場景生成器創建的整個fxml文件集成到JFrame中。例如,這是我使用Scene builder創建的fxml文件的內容。在Swing JFrame中集成JavaFX的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的內容。

+2

爲什麼不使用Java-FX等價物? –

+0

我找不到你。你能更精煉嗎? – iammurtaza

+1

他想說:爲什麼不使用'Scene'和'Stage'而不是'JFrame'? –

回答

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()); 
       } 
      } 
     });