创建一个包含要在布局中使用的联合/减去形状的对象

时间:2015-10-14 04:36:51

标签: javafx-8

对于JavaFX和一般的编程,尤其是面向对象,我非常环保。我最初使用Main()方法,并且能够使用多个Shapes创建更复杂的形状并使用联合和减法。现在,我希望能够创建一个新的类/对象,我可以调用它来重用该代码。

我认为这就像创建一个“complexshape”类并扩展Shapes一样。然后像我在main()中那样建立复杂的形状。然后返回main并通过构造函数实例化一个对象,并通过layout.getChildren().add(objectname);将对象放入我的布局中

但是我的IDE告诉我“complexshape”类必须是抽象的,我有一个部分线索是什么意思。但我不确定该怎么办。

关于为什么我的逻辑错在这里的任何想法?

Main.java

package sample;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Shape;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) {
    StackPane root = new StackPane();
    Scene scene = new Scene(root, 100,100,Color.WHITE);

    complexShape A = new complexShape();

    root.getChildren().add(A);

    primaryStage.setScene(scene);
    primaryStage.show();
}

public static void main(String[] args) {
    launch(args);
}
}

complexShape.java

 package sample;

import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Shape;

public class complexShape extends Shape {

public Shape complesShape(){
    Circle A = new Circle(50,50,10);
    Rectangle B = new Rectangle(50,50,100,10);
    Shape C = Shape.union(A, B);
    C.setFill(Color.RED);
    return C;
}
}

1 个答案:

答案 0 :(得分:1)

处理此问题的最佳方法是使用布局作为所有对象的容器(即矩形,圆形等),并创建可在事后更改的字段或属性。因此,创建一个扩展某种类型布局(HBox,VBox,GridPane等)的类,并将所有形状对象放在那里。如果您需要从另一个形状中减去一个形状并且它需要是动态的,请创建一个方法,以便在调用时重建形状。