You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用内部类在JavaFX中绘制三角形的技术实现问题

修复你的JavaFX内部类三角形生成代码

嘿,我看了你这段尝试用内部类生成三角形并在JavaFX中显示的代码,发现几个可以优化和补全的点,咱们来一步步修正:

原代码的问题点

  • 你定义的InnerClass已经继承了Polygon,但又额外声明了一个Polygon triangle成员变量,这完全没必要——直接使用this(也就是当前InnerClass实例本身)就可以操作多边形的点了。
  • 代码没写完,底边左顶点的坐标没有补充完整,而且等边三角形的高计算可以更简洁直观。

修正后的完整代码

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;

public class OuterClass extends Application {

    // 内部类直接继承Polygon,无需额外定义Polygon变量
    public class InnerClass extends Polygon {
        InnerClass(double x, double y, double side) {
            // 计算等边三角形的高:(√3/2)*边长
            double height = (Math.sqrt(3) / 2) * side;
            // 三个顶点坐标:以(x,y)为中心
            double topX = x;
            double topY = y - height / 2;
            double rightX = x + side / 2;
            double rightY = y + height / 2;
            double leftX = x - side / 2;
            double leftY = y + height / 2;

            // 直接给当前Polygon实例添加顶点
            getPoints().addAll(
                    topX, topY,
                    rightX, rightY,
                    leftX, leftY
            );
            // 设置样式方便查看
            setFill(Color.LIGHTBLUE);
            setStroke(Color.BLACK);
            setStrokeWidth(2);
        }
    }

    @Override
    public void start(Stage primaryStage) {
        Pane root = new Pane();
        // 创建内部类实例:中心在(300,200),边长200
        InnerClass triangle = new InnerClass(300, 200, 200);
        root.getChildren().add(triangle);

        Scene scene = new Scene(root, 600, 400);
        primaryStage.setTitle("JavaFX Triangle from Inner Class");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

关键说明

  • 移除冗余变量:因为InnerClass本身就是Polygon的子类,直接调用getPoints()添加顶点即可,不需要再实例化另一个Polygon对象。
  • 简化高的计算:把原代码的复杂计算简化为直接计算等边三角形的高,逻辑更清晰。
  • 补全启动逻辑:添加了完整的JavaFX窗口启动代码,确保修改后的代码可以直接运行看到效果。

内容的提问来源于stack exchange,提问作者TABindenter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:38:36