繁体   English   中英

Javafx:如何使用源文件的驱动程序文件来显示创建的形状

[英]Javafx: How to use a driver file for a source file to show shape created

我正在尝试了解针对我正在处理的某个问题提供的驱动程序文件。 我刚开始学习javafx,我试图在驱动程序文件中创建一个形状,但是初始化、鼠标事件等的额外代码在源文件中。 我创建了一个函数,该函数返回矩形的初始化 X 和我的驱动程序文件中的 system.out.println,因此我知道它们已连接。 然而,每当我运行我的驱动程序文件时,我都会得到一个没有形状的空白屏幕。 有人能告诉我我在场景/根/舞台显示上做错了什么。

这是我的代码:

Multishape.java:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;


public class Multishape extends Group {
//Declaring variables here gives them greater scope

private Rectangle rectangle;
private Circle circle;
Group root = new Group();

public Multishape (double x, double y, double len){
  rectangle = new Rectangle(len, len, Color.BLUE);
  rectangle.setX(x);
  rectangle.setY(y);
  circle = new Circle(len, Color.RED);    

}

//@Override
public void start(Stage primaryStage) {
    //rectangle.setOnMouseClicked(handleMouseClick);//Set mouse click handler
    //circle.setOnMouseClicked(handleMouseClick);//Set mouse click handler

    root.getChildren().add(rectangle);//Set initial shape.

    Scene scene = new Scene(root, 500, 500);
    primaryStage.setScene(scene);
    primaryStage.show();
}


double getLen(){
  return (rectangle.getX());
}

}

MultishapeDriver.java:

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.input.KeyEvent;
import javafx.event.EventHandler;

public class MultishapeDriver extends Application
{
  public static void main(String[] args)
  {
    launch(args);
  }

  public void start(Stage stage)
  {
    stage.setTitle("Multishape lab");
    Group root = new Group();
    Multishape shape = new Multishape(320, 240, 40);
    root.getChildren().add(shape);
//stage.addEventHandler(KeyEvent.KEY_TYPED, shape.getKeyHandler());

System.out.println(shape.getLen());
stage.setScene(new Scene(root, 640, 480));
stage.show();
  }
}

您的 Multishape 是 Group 类型的容器。 但是在它的构造函数中,你只创建了 2 个对象,你永远不会将它们添加到你的 multishape 中。 所以你需要使用getChildren().add(rectangele)等将它们getChildren().add(rectangele)到你的多重形状中。

您的 Multishape 构造函数将如下所示:

public Multishape (double x, double y, double len){
  rectangle = new Rectangle(len, len, Color.BLUE);
  rectangle.setX(x);
  rectangle.setY(y);
  circle = new Circle(len, Color.RED);    
  getChildren().add(rectangle);
  getChildren().add(circle);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM