当前位置: 首页 > 知识库问答 >
问题:

为什么我的javafx代码将我所有的形状居中?

邓仲卿
2023-03-14

我试图自学JavaFX,并试图创建一个简单的笑脸图像。但出于某种原因,我所有的形状都以中心为中心,而不是以X&Y坐标为中心。我想不出为什么。有人能帮我弄清楚吗?

下面是我的代码:

import javafx.*;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import javafx.stage.Stage;

public class smiley extends Application {

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

    public void start(Stage primaryStage) throws Exception {
        Circle head = new Circle(250, 250, 150);
        head.setFill(Color.YELLOW);
        Circle eyeL = new Circle(200, 175, 25);
        eyeL.setFill(Color.BLACK);
        Circle eyeR = new Circle(300, 175, 25);
        eyeR.setFill(Color.BLACK);
        double[] points = { 250.0, 200.0, 250.0, 275.0, 290.0, 275.0 };
        Polygon nose = new Polygon(points);
        Arc smile = new Arc(275.0, 300.0, 75.0, 50.0, 180.0, 180.0);
        smile.setStroke(Color.RED);
        smile.setFill(Color.YELLOW);

        StackPane smiley = new StackPane();
        smiley.getChildren().add(head);
        smiley.getChildren().add(eyeL);
        smiley.getChildren().add(eyeR);
        smiley.getChildren().add(nose);
        smiley.getChildren().add(smile);

        Scene scene = new Scene(smiley, 500, 500);
        primaryStage.setTitle("Smiley");
        primaryStage.setScene(scene);
        primaryStage.show();

    }

}

这就是我最后得到的

共有1个答案

卫乐童
2023-03-14

StackPane把它的孩子放在一起。想想一叠煎饼。最后一个在上面,第一个在下面。如果您设置了边框/填充,那么子项将被放置在这些插图的中心。此外,StackPane将调整所有子区域的大小以适应内容区域,但如果这不可能,它将把它放在中心。我不认为这是您在这里的意图,所以尝试使用StackPane继承自的Pane类。

Pane pane = new Pane();
 类似资料:
  • 请检查这段代码,看看@Arun R在如何计算覆盖另一个矩形的矩形面积中所说的算法有什么问题 为什么它没有删除其他内部的矩形

  • 今天我在家里的电脑上安装了netbean,以便在家做一些工作。我安装了java 8 JDK(151),并安装了包含所有内容的netbean(没有进行自定义安装)。然后我把我的项目从github上撤下来。 我的安装文件夹是在E:\netbean我的项目文件夹是默认的c: 我加载了项目,打开XAMPP并运行它。太好了,很管用。 然后我对HTML进行了更改(修复了我犯的一个拼写错误)。再次运行。找不到零

  • 您将自动执行著名的歌曲“墙上的99瓶XXX”。你将打印这首歌所有99个诗句的歌词。用循环!如果你不知道歌词,用谷歌查一下。 该方案应: a.如果他们不到21岁,或者他们喜欢苏打水,那么歌词是“墙上有99瓶苏打水” B.如果他们超过21岁,那么是“99瓶啤酒” 您必须使用WHILE循环,并且counter变量必须是print语句的一部分! 所以第一节是: 99瓶苏打水挂在墙上 墙上有98瓶苏打水 最

  • 我从JavaFXml开始,但我在编译程序方面遇到了问题。编译器显示了我的问题,我没有任何想法来解决这个问题。 我的Mine类: 我的控制器类: 我的sample.fxml文件 当我编译这个时,compiller会显示一个错误: 我试着解决它,就像在这一页上: https://github.com/openjfx/javafx-maven-plugin https://openjfx.io/open

  • 问题内容: 我在TableView中添加了默认的TEST1和TEST2作为Name Col,但是在运行它时却没有显示。这是我使用过的两个类和一个fxml,有人可以给我一些有关此问题的建议吗? 仅一个包调用:controllerJBoxFXTest 第一类MainView.class包controllerJBoxFXTest; 在第二个MainController.java中,可以看到我添加了TES

  • 我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 输入三角形的三条边