2017-04-06 134 views
0

FXML文件:如何在JavaFX中將場景添加到場景中?

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

<?import java.lang.*?> 
<?import java.util.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import java.net.URL?> 

<AnchorPane id="AnchorPane" fx:id="apMain" prefHeight="600" prefWidth="600" xmlns:fx="http://javafx.com/fxml/1" fx:controller="funkcje.FXMLDocumentController"> 
    <stylesheets> 
    <URL value="@style.css" /> 
    </stylesheets> 
    <children> 
     <Button prefHeight="20" prefWidth="70" layoutX="265" layoutY="550" text="Narysuj" onAction="#handleButtonAction" fx:id="button" /> 
     <Label layoutX="30" layoutY="500" minHeight="16" minWidth="69" text="Podaj A:" fx:id="labelA" /> 
     <TextField layoutX="105" layoutY="503" prefHeight="20" prefWidth="90" fx:id="textfieldA" /> 
     <Label layoutX="200" layoutY="500" minHeight="16" minWidth="69" text="Podaj B:" fx:id="labelB" /> 
     <TextField layoutX="275" layoutY="503" prefHeight="20" prefWidth="90" fx:id="textfieldB" /> 
     <Label layoutX="370" layoutY="500" minHeight="16" minWidth="69" text="Podaj miare:" fx:id="labelC" /> 
     <TextField layoutX="483" layoutY="503" prefHeight="20" prefWidth="90" fx:id="textfieldC" /> 
    </children> 
</AnchorPane> 

FXML控制器:

package funkcje; 

    import java.net.URL; 
    import java.util.ResourceBundle; 
    import javafx.event.ActionEvent; 
    import javafx.fxml.FXML; 
    import javafx.fxml.Initializable; 
    import javafx.scene.Group; 
    import javafx.scene.control.Label; 
    import javafx.scene.layout.AnchorPane; 
    import javafx.scene.layout.Pane; 
    import javafx.scene.paint.Color; 
    import javafx.scene.shape.Line; 
    import javafx.scene.shape.Rectangle; 

    /** 
    * 
    * 
    */ 
    public class FXMLDocumentController implements Initializable { 

     @FXML 
     private Label label; 
     private AnchorPane apMain; 

     @FXML 
     private void handleButtonAction(ActionEvent event) { 
      System.out.println("You clicked me!"); 
      label.setText("Hello World!"); 
     } 

     @Override 
     public void initialize(URL url, ResourceBundle rb) { 
      // TODO 
      Group group = new Group(); 
      Rectangle r2 = new Rectangle(250, 25, 100, 140); 
      r2.setStroke(Color.BLACK); 
      r2.setFill(null); 
      r2.setStrokeWidth(3); 
      r2.setArcWidth(25); 
      r2.setArcHeight(25); 
      group.getChildren().add(r2); 

      apMain.getChildren().add(group); 

     }  

    } 

main app: 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package funkcje; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Group; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.layout.AnchorPane; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Line; 
import javafx.scene.shape.Rectangle; 
import javafx.stage.Stage; 

/** 
* 
* 
*/ 
public class Funkcje extends Application { 

    @Override 
    public void start(Stage stage) throws Exception { 
     Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 
     Scene scene = new Scene(root); 
     stage.setResizable(false); 
     stage.setTitle("Funkcje"); 
     stage.setScene(scene); 
     stage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 

這。幫我。 有一些文字,我不能發佈,因爲我有太多的代碼和文字少。 這是。幫我。 有一些文字,我不能發佈,因爲我有太多的代碼和文字少。 這是。幫我。 有一些文字,我不能發佈,因爲我有太多的代碼和文字少。 這是。幫我。 有一些文字,我不能發佈,因爲我有太多的代碼和文字少。

+0

http://stackoverflow.com/questions/18152639/javafx-adding-a-new-node-to -scene-in-java-code-when-scene-is-loaded- – Misys

+0

場景只有一個節點:根。如果你想添加更多的節點,你可以將它們添加到根目錄。 (爲了調用'getChildren()。add(canva)'',你需要根是'Pane'或'Group'。) –

+0

我做了上面鏈接的解決方案,但矩形不顯示。看看帖子中的代碼 – Sleeper

回答

0

在你FXMLDocumentController.java文件更改:

private AnchorPane apMain; 

要:

@FXML private AnchorPane apMain; 
+0

最後我得到了我的矩形繪製!謝謝,抱歉要求簡單的事情,但我是新來的javafx – Sleeper

+0

如果答案是正確的接受它。 – Sedrick