我有这个有效的JavaFX代码,用于在根框架中绘制四个不同的形状。我希望每个形状都有实现它的自己的方法,例如,如果它是一个圆形,则类似public void circle(){//statements}
,但我不知道该怎么做。请帮我。谢谢。
package shapes;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.shape.Polygon;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
/**
*
* @author mach
*/
public class Shapes extends Application {
@Override
public void start(Stage primaryStage) {
Group root = new Group();
//Draw a line
Line line= new Line();
line.setStartX(150);
line.setStartY(20);
line.setEndX(270);
line.setEndY(20);
line.setStroke(Color.RED);
//Draw a circle radius (x,y,radius)
Circle circle = new Circle(70, 110, 30);
circle.setStroke(Color.RED);
circle.setFill(Color.AQUA);
//draw a Rectangle(x, y, width, height);
Rectangle rect = new Rectangle(200, 90, 70,50);
rect.setStroke(Color.WHITE);
rect.setFill(Color.BLUE);
//Draw a triange
Polygon triangle = new Polygon();
triangle.getPoints().addAll(50.0, 0.0, 50.0, 50.0,100.0, 50.0);
Scene scene = new Scene(root, 300, 300);
//add all the created objects to canvas
root.getChildren().addAll(line, circle, rect, triangle);
primaryStage.setTitle("PART 1!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:0)
像这样吗?
public Circle getCircle(){
Circle circle = new Circle(70, 110, 30);
circle.setStroke(Color.RED);
circle.setFill(Color.AQUA);
return circle;
}
在不知道您正在使用什么的情况下,我只想补充一点,我通常不知道在这里使用没有任何参数的方法的充分理由,因此建议您不要这样做。
答案 1 :(得分:0)
这是上面答案的扩展。
经过研究,我发现了如何将形状添加到根框架中。在public void start(Stage primaryStage)
方法内部,创建Shape类的对象,并使用该对象调用这些形状的方法。将对象分配给变量,然后在我的情况下(根)将其添加到框架。
public void start(Stage primaryStage) {
Shapes frame = new Shapes();
Circle circle = frame.getCircle();
Rectangle rectangle= frame.getRectangle();
root.getChildren().addAll(circle, rectangle);
}
public Rectangle getRectangle(){
Rectangle rect = new Rectangle(200, 90, 70,50);
rect.setStroke(Color.WHITE);
rect.setFill(Color.BLUE);
return rect;
}