使用内部类在JavaFX中显示三角形
我试图创建一个内部类,根据给定的变量创建一个三角形,然后在JavaFX场景中显示它。我的当前代码如下所示:使用内部类在JavaFX中显示三角形,java,javafx,Java,Javafx,我试图创建一个内部类,根据给定的变量创建一个三角形,然后在JavaFX场景中显示它。我的当前代码如下所示: public class OuterClass extends Application { public class InnerClass extends Polygon { Polygon triangle; InnerClass(double x, double y, double side) { double mySideSqrt = Math.sqr
public class OuterClass extends Application {
public class InnerClass extends Polygon {
Polygon triangle;
InnerClass(double x, double y, double side) {
double mySideSqrt = Math.sqrt((side * side) - (side / 2 * side / 2)) / 2;
double tX = x;
double tY = y - mySideSqrt;
double rX = x + side / 2;
double rY = y + mySideSqrt;
double lX = x - side / 2;
double lY = y + mySideSqrt;
Polygon triangle = new Polygon(tX, tY, rX, rY, lX, lY);
this.triangle = triangle;
}
}
@Override
public void start(Stage primaryStage) {
int myWidth = 600;
int myHeight = 519;
primaryStage.setTitle("Triangle");
Group root = new Group();
Scene scene = new Scene(root, myWidth, myHeight);
//Polygon triangle = new Polygon(100.0, 0.0, 200.0, 173.3, 0, 173.3); //100.0, 0.0, 200.0, 100.0, 0.0, 100.0
InnerClass triangle = new InnerClass(300, 260, 196);
triangle.setFill(Color.LIGHTGRAY);
root.getChildren().add(triangle);
primaryStage.setScene(scene);
primaryStage.show();
}
}
当我调试代码时,它似乎在断行:
InnerClass triangle = new InnerClass(300, 260, 196);
因为在内部类中创建的三角形没有拉入方法,因此不会显示在场景中
有什么办法让它工作吗?删除
多边形三角形代码>和更改多边形三角形=新多边形(tX、tY、rX、rY、lX、lY);这个三角形=三角形代码>到getPoints().addAll(tX、tY、rX、rY、lX、lY)代码>
全班:
public class InnerClass extends Polygon {
InnerClass(double x, double y, double side) {
double mySideSqrt = Math.sqrt((side * side) - (side / 2 * side / 2)) / 2;
double tX = x;
double tY = y - mySideSqrt;
double rX = x + side / 2;
double rY = y + mySideSqrt;
double lX = x - side / 2;
double lY = y + mySideSqrt;
getPoints().addAll(tX, tY, rX, rY, lX, lY);
}
}
删除多边形三角形代码>和更改多边形三角形=新多边形(tX、tY、rX、rY、lX、lY);这个三角形=三角形代码>到getPoints().addAll(tX、tY、rX、rY、lX、lY)代码>
全班:
public class InnerClass extends Polygon {
InnerClass(double x, double y, double side) {
double mySideSqrt = Math.sqrt((side * side) - (side / 2 * side / 2)) / 2;
double tX = x;
double tY = y - mySideSqrt;
double rX = x + side / 2;
double rY = y + mySideSqrt;
double lX = x - side / 2;
double lY = y + mySideSqrt;
getPoints().addAll(tX, tY, rX, rY, lX, lY);
}
}
非常感谢,效果很好。你能解释一下为什么“getPoints().addAll(tX,tY,rX,rY,lX,lY);”在我的方法中起作用吗?我假设它将这些变量传递到多边形函数中?您创建了两个多边形,第一个是InnerClass
,它不包含任何点,第二个包含点的多边形隐藏在第一个多边形函数中。非常感谢,效果很好。你能解释一下为什么“getPoints().addAll(tX,tY,rX,rY,lX,lY);”在我的方法中起作用吗?我假设它将这些变量传递到多边形函数中?您创建了两个多边形,第一个是InnerClass
,它不包含任何点,第二个包含点的多边形隐藏在第一个多边形的内部。