当前位置: 首页 > 面试题库 >

在JavaFX中显示字符串/标签

萧永长
2023-03-14
问题内容

我需要帮助弄清楚如何在程序中显示文本,以便它可以在我创建的多边形形状的中间显示“停止”。我想做的是创建一个停车标志。我已经负责创建和显示该停车标志,因此现在只需要在屏幕上显示“停止”即可

package application;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
    Pane pane = new Pane();
    Polygon polygon = new Polygon();
    pane.getChildren().add(polygon);
    polygon.setFill(javafx.scene.paint.Color.RED); //sets the color of polygon
    ObservableList<Double> list = polygon.getPoints();

    //create a label to display in the middle of the "stop sign" polygon shape
    //This is what I need most help on
    Label sign = new Label("Stop"); 
    sign.setAlignment(Pos.CENTER);
    System.out.print(sign);

    final double WIDTH = 200, HEIGHT = 200;
    double centerX = WIDTH / 2, centerY = HEIGHT / 2;
    double radius = Math.min(WIDTH, HEIGHT) * 0.4;

    // Add points to the polygon list
    for (int i = 0; i < 6; i++){
        list.add(centerX + radius * Math.cos(2 * i * Math.PI / 6));
        list.add(centerY - radius * Math.sin(2 * i * Math.PI / 6));
    }

    // Create a scene and place it in the stage
    Scene scene = new Scene(pane, WIDTH, HEIGHT);
    primaryStage.setTitle("ShowPolygon"); //Set the stage title 
    primaryStage.setScene(scene); //Place the scene in the stage
    primaryStage.show(); //Display the stage



}

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

}


问题答案:

更换PaneStackPane,并添加sign到它(多边形后):

public void start(Stage primaryStage) {
    StackPane pane = new StackPane();
    Polygon polygon = new Polygon();
    polygon.setFill(javafx.scene.paint.Color.RED); //sets the color of polygon
    ObservableList<Double> list = polygon.getPoints();

    //create a label to display in the middle of the "stop sign" polygon shape
    //This is what I need most help on
    Label sign = new Label("STOP");
    //sign.setStyle("-fx-text-fill: white; -fx-font-size: 3em");
    sign.setAlignment(Pos.CENTER);
    System.out.print(sign);


    pane.getChildren().add(polygon);
    pane.getChildren().add(sign);

    final double WIDTH = 200, HEIGHT = 200;
    double centerX = WIDTH / 2, centerY = HEIGHT / 2;
    double radius = Math.min(WIDTH, HEIGHT) * 0.4;

    // Add points to the polygon list
    for (int i = 0; i < 6; i++) {
        list.add(centerX + radius * Math.cos(2 * i * Math.PI / 6));
        list.add(centerY - radius * Math.sin(2 * i * Math.PI / 6));
    }

    // Create a scene and place it in the stage
    Scene scene = new Scene(pane, WIDTH, HEIGHT);
    primaryStage.setTitle("ShowPolygon"); //Set the stage title
    primaryStage.setScene(scene); //Place the scene in the stage
    primaryStage.show(); //Display the stage


}

关于的Javadoc StackPane

StackPane将其子级放在从后到前的堆栈中。子级的z顺序由子级列表的顺序定义,第0个子级是底部,最后一个子级在顶部。如果已设置边框和/或填充,则将在这些插图内布置孩子。

堆栈窗格将尝试调整每个子项的大小以填充其内容区域。如果无法调整子级的大小来填充堆栈窗格(因为无法调整大小或最大尺寸阻止了它),那么它将使用alignment属性(默认值为Pos.CENTER)在区域内对其进行对齐。



 类似资料:
  • 问题内容: 我们正在TextArea应用程序中使用JavaFX的控件,并尝试将其与 集成在一起-例如,当用户输入词典中没有的错误单词时,该单词将突出显示。 有什么办法可以突出显示控件中的单词吗?我在中没有看到任何选择,因此,如果有人可以建议一种方法? 我想,可能有可能使用组件并用分别为单词加上颜色。但是,这会带来很多不同的拼写检查问题,例如html标签和字数统计。 问题答案: JavaFX Tex

  • 我刚启动JavaFx,有点拘泥于TableView,它显示了每个列的非常长的字符串表示,如: 而我预计细胞中只会出现“大”、“5000”、“3000”。 这是我的模型: fxml: 最后是控制器: 看起来控制器很好,它能够从数据库中获取值并向TableView添加行,但为什么TableView显示属性对象的字符串表示,而不仅仅是显示值? 非常感谢!

  • 我有一个注册过程,在确认细节上,我正在尝试显示输入的地址,但我似乎不能让它正确显示,我已经尝试了网站上的其他答案,但没有一个似乎是有效的。 代码 HTML 理想情况下,我希望使用,但最初我尝试了一下,找到的答案是使用 这是,它正在填充我的“comp add”。 当用户离开页面时,它会这样做,并按上面所示工作,但我无论如何都无法将其显示为: 添加第1行 添加第2行 城镇 县 BB1 1BB

  • 本文向大家介绍在Java字符串中最多显示10个字符,包括了在Java字符串中最多显示10个字符的使用技巧和注意事项,需要的朋友参考一下 要在一个字符串中最多显示10个字符,请使用Formatter类。 为Java中的Formatter类导入以下软件包- 创建一个新的Formatter对象- 现在让我们在一个字符串中最多显示10个字符- 以下是一个例子- 示例 输出结果

  • getter称为getShowName()、getEpsWatched()和getShowStatus(),它们获得变量showName、epsWatched和showStatus。 这里怎么了?显示字符串,但不显示int。

  • 问题内容: 我想打印一个字符或字符串,例如’-‘n次。 我可以不使用循环就做吗? ..这意味着打印3次,如下所示: 问题答案: Python 2.x: Python 3.x: