将自定义类的实例添加到JavaFX中的窗格

时间:2017-07-20 15:59:17

标签: java javafx

我有一个包含用户界面和以下事件处理程序的主类。

public Pane canvas;
menuBarItemH.setOnAction(e1 -> {
    Flock.SeparationRange = separateDistance;
    Flock.DetectionRange = detectDistance;

    Flock flock = new Flock();

    for (int i=0; i < numberOfGreenPassengers; i++) {
        Passenger passenger = new Passenger(10, 10, 10, Color.BROWN, ball);
        passenger.setCenterX(10);
        passenger.setCenterY(10);
        passenger.setRadius(10);
        passenger.setSpeed( greenPassengerSpeed );
        passenger.setMaxTurnTheta( greenPassengerMaxTheta );
        flock.addPassenger(passenger);      

        canvas.getChildren().add(passenger);  
    }

Passenger和Flock是单独的类,在为Passenger实例创建每个实例和调用方法后,我试图将生成的实例添加到名为canvas的Pane中。

以下是Passenger的构造函数:

public class Passenger extends Circle {

  protected Point location = new Point(0,0);
  private int currentTheta;
  public Color color;
  protected static Dimension map = new Dimension( 500, 500 );
  private double currentSpeed; 
  private int maxTurnTheta;

  static Circle ball8 = new Circle(5, Color.BROWN);

  Passenger(int x, int y, int theta, Color passengerColor, Circle ball) {
    location.x = x;
    location.y = y;
    currentTheta = theta;
    color = passengerColor;
    ball8 = ball;
  }

对于Flock:

Flock() {
  passengers = new Vector(40,1);
}

我已将Passenger作为Circle的扩展,并将一个圆圈作为构造函数的一部分实现,以尝试使其与主类中的Pane命名画布兼容。

flock类包含各种方法,用于控制从Passenger类创建的对象的移动。

我的问题是,是否有任何方法可以将窗格/乘客对象添加到窗格作为节点,如果没有,是否有另一种方法可以添加包含视觉元素(如形状)但也包含其他方法的对象除了javafx场景的形状的基本构造函数之外。

由于

0 个答案:

没有答案