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