JavaFX 提供了多种形状类,用于绘制文本、直线、圆、矩形、椭圆、孤、多边形以及折线。
Shape 类是一个抽象基类,定义了所有形状的共同属性。这些属性有fill、stroke,strokeWidth。
fill 属性指定一个填充形状内部区域的颜色。
Stroke 属性指定用于绘制形状边缘的颜色。
strokeWidth 属性指定形状边缘的宽度。
Shape的子类:
1、Text
Pane pane = new Pane();
Text text1 = new Text(20,20,"Java is interesting");
text1.setFont(Font.font("Courier",FontWeight.BOLD,FontPosture.ITALIC,15));
text1.setFill(Color.RED);
text1.setUnderline(true); // underline
text1.setStrikethrough(true); // strikethrough
pane.getChildren().add(text1);
Scene scene1 = new Scene(pane, 500, 500); // create a scene
primaryStage.setTitle("ShowBorderdPane");
primaryStage.setScene(scene1); // place the scene in the stage
primaryStage.show();
2、Line
1条直线通过4 个参数(startX、startY、endX 以及endY) 连接两个点.
//line
Line line1 = new Line(70,70,120,120);
Line line2 = new Line(70,120,120,70);
// line1.endXProperty().bind(pane.widthProperty().divide(2));
// line1.endYProperty().bind(pane.heightProperty().divide(2));
line1.setStrokeWidth(5);
line2.setStrokeWidth(5);
line1.setStroke(Color.MEDIUMAQUAMARINE);
line2.setStroke(Color.MEDIUMAQUAMARINE);
pane.getChildren().addAll(line1,line2);
3、Rectangle
— 个矩形通过参数x、y、width、height、arcWidth 以及arcHeight 定义。矩形的左上角点处于(x,y), 参数aw(arcWidth) 表示圆角处弧的水平直径,ah(arcHeight)表示圆角处弧的垂直直径。
Rectangle r1 = new Rectangle(10,130,40,50);
r1.setStroke(Color.TAN);
r1.setFill(Color.WHITE); // r1.setFill(null);
pane.getChildren().add(r1);
4、Circle Ellipse
Circle circle = new Circle(90,160,15);
Ellipse ellipse = new Ellipse(160,160,20,10);
还有一些子类,例如Arc 一段弧,Polygon 多边形,Polyline 不会自动闭合的多点连线。
总程序如下:
public class MyJavaFX extends Application {
@Override // Override the start method in the Application class
public void start(Stage primaryStage) { //set a primary stage
Pane pane = new Pane();
// text
Text text1 = new Text(50,50,"Java is interesting");
text1.setFont(Font.font("Courier",FontWeight.BOLD,FontPosture.ITALIC,15));
text1.setFill(Color.RED);
text1.setUnderline(true); // underline
text1.setStrikethrough(true); // strikethrough
//line
Line line1 = new Line(70,70,120,120);
Line line2 = new Line(70,120,120,70);
// line1.endXProperty().bind(pane.widthProperty().divide(2));
// line1.endYProperty().bind(pane.heightProperty().divide(2));
line1.setStrokeWidth(5);
line2.setStrokeWidth(5);
line1.setStroke(Color.MEDIUMAQUAMARINE);
line2.setStroke(Color.MEDIUMAQUAMARINE);
// rectangle
Rectangle r1 = new Rectangle(10,130,40,50);
r1.setStroke(Color.TAN);
r1.setFill(Color.WHITE); // r1.setFill(null);
// circle
Circle circle = new Circle(90,160,15);
Ellipse ellipse = new Ellipse(160,160,20,10);
pane.getChildren().addAll(text1,line1,line2,r1,circle,ellipse);
Scene scene1 = new Scene(pane, 500, 500); // create a scene
primaryStage.setTitle("ShowBorderdPane");
primaryStage.setScene(scene1); // place the scene in the stage
primaryStage.show();
}
}