2014-06-09 157 views

回答

0

以下代碼顯示如何使用FXMLLoader將字符串轉換爲某些FXML對象。 然後可以使用通常的GetChildren().Add(XX)來分配到任何你需要的地方。

羅伯特

package ic.ac.uk.relationshipvisualiser.app; 

import java.io.ByteArrayInputStream; 
import java.io.InputStream; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 

public class tmpTest extends Application { 

    public static void main(String[] args) { 
     System.out.println("Start tmpTest"); 
     launch(args); 
     System.out.println("Start tmpTest"); 
    } 

    final Group m_root = new Group(); 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     String sample_fxml = 
       "<?import javafx.scene.control.Label?>" + 
       "<?import javafx.scene.Group?>" + 
       "<Group xmlns:fx=\"http://javafx.com/fxml\">" + 
       "  <Label fx:id=\"Name\" style=\"-fx-font-weight: bold;\" alignment=\"CENTER\">It worked</Label>" +   
       "</Group>"; 

     InputStream stream = new ByteArrayInputStream(sample_fxml.getBytes("UTF-8")); 
     FXMLLoader l = new FXMLLoader(); 

     Group mG = (Group) l.load(stream); 

     m_root.getChildren().add(mG); 

     primaryStage.setScene(new Scene(m_root)); 

     primaryStage.show(); 

    } 

} 
+0

看這張圖片我想在scrollpane裏面添加fxml [鏈接](http://i.stack.imgur.com/DiPnk.p ng) – user3717821

+0

不是在運行時啓動或在啓動後執行的任何函數 – user3717821

+0

我試圖展示如何將字符串加載到一組FXML對象中。在這個例子中,我是在啓動時完成的,但是在任何事件中都可以放置完全相同的代碼。您還需要修改它以從實際的FXML文件中讀取字符串。 – Robert3452

0

繼我以前的答案,顯示從文件中讀取: 首先創建一個文件C:\ test.fxml包含:

<?import javafx.scene.control.Label?> 
<?import javafx.scene.Group?> 
<Group xmlns:fx="http://javafx.com/fxml"> 
<Label fx:id="Name" style="-fx-font-weight: bold;" alignment="CENTER">It worked</Label>  
</Group> 

下一頁使用下面的代碼:

package ic.ac.uk.relationshipvisualiser.app; 

import java.io.FileInputStream; 
import java.io.InputStream; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 

public class tmpTest extends Application { 

    public static void main(String[] args) { 
     System.out.println("Start tmpTest"); 
     launch(args); 
     System.out.println("Start tmpTest"); 
    } 
    final Group m_root = new Group(); 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     InputStream stream = new FileInputStream("c:\\test.fxml"); 
     FXMLLoader l = new FXMLLoader(); 
     Group mG = (Group) l.load(stream); 

     m_root.getChildren().add(mG); 
     primaryStage.setScene(new Scene(m_root)); 
     primaryStage.show(); 
    } 
} 
+0

感謝您的代碼 – user3717821