单击按钮JavaFX创建一个圆

时间:2017-06-25 21:46:04

标签: javafx netbeans scenebuilder

我尝试通过单击按钮创建一个新形状(本例中为Circle)。 我还没完全使用JavaFX,所以执行时遇到小问题。我熟悉改变现有形状的尺寸,颜色等,但我不知道如何在点击上创建一些东西。 我的控制器和我的主要到目前为止:

package javafxapplication1;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

/**
 *
 * @author Tom
 */
public class JavaFXApplication1 extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();

    }

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

}

--------------------这里启动控制器---------------

package javafxapplication1;

import java.awt.Paint;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;

/**
 *
 * @author Tom
 */
public class FXMLDocumentController implements Initializable {

    @FXML
    private Button btn;


    @FXML
    public void pressButton(ActionEvent event){
       Circle kreis1;
        kreis1 = new Circle(200, 200, 10, Color.BLACK);

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
}
你能帮帮我吗?我需要这些基础但在网上找不到任何解释! Thx提前!

1 个答案:

答案 0 :(得分:0)

你实际上几乎做到了,只缺少两件事。

首先,您没有包含pressButton,但我认为onAction方法绑定到按钮的Circle事件。

您在按钮操作上创建了<AnchorPane fx:id="root" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> <children> <Button fx:id="btn" layoutX="271.0" layoutY="331.0" onAction="#pressButton" text="Button" /> </children> </AnchorPane> ,现在需要将该圆圈添加到窗格中。如果不添加到窗格,则不会看到圆圈。

例如,如果我们有这个fxml;

fx:id="root"

我们有一个@FXML private AnchorPane root; 的AnchorPane,我们想在按钮操作上添加圈子。

现在在我们的控制器类中,我们需要绑定AnchorPane

@FXML
public void pressButton(ActionEvent event){
   Circle kreis1;
   kreis1 = new Circle(200, 200, 10, Color.BLACK);
   root.getChildren().add(kreis1);
}

现在,只需在pressButton方法中将圆圈添加到此根目录。

@FXML
public void pressButton(ActionEvent event) {

    Random rand = new Random();
    int  x = rand.nextInt(500) + 1;
    int  y = rand.nextInt(400) + 1;
    int r = rand.nextInt(40) + 10;
    double red = rand.nextDouble();
    double green = rand.nextDouble();
    double blue = rand.nextDouble();

    Circle kreis1;
    kreis1 = new Circle(x, y, r, new Color(red, green, blue,1));

    root.getChildren().add(kreis1);
}

这将在x,y坐标200,200中创建一个圆圈。

例如,这个pressButton方法将在窗格中创建具有随机坐标和随机颜色的圆圈。

{{1}}