创建包含要在布局中使用的并集/已减去形状的对象

问题描述 投票:1回答:1

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

我认为应该遵循创建“ complexshape”类和扩展Shape的思路。然后像在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;
    }
}

总体而言,关于JavaFX和编程,尤其是面向对象,我非常环保。我最初使用Main()方法,并且能够使用...

javafx-8
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.