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);
}
}
這。幫我。 有一些文字,我不能發佈,因爲我有太多的代碼和文字少。 這是。幫我。 有一些文字,我不能發佈,因爲我有太多的代碼和文字少。 這是。幫我。 有一些文字,我不能發佈,因爲我有太多的代碼和文字少。 這是。幫我。 有一些文字,我不能發佈,因爲我有太多的代碼和文字少。
http://stackoverflow.com/questions/18152639/javafx-adding-a-new-node-to -scene-in-java-code-when-scene-is-loaded- – Misys
場景只有一個節點:根。如果你想添加更多的節點,你可以將它們添加到根目錄。 (爲了調用'getChildren()。add(canva)'',你需要根是'Pane'或'Group'。) –
我做了上面鏈接的解決方案,但矩形不顯示。看看帖子中的代碼 – Sleeper