关于java:水平和反向打印编号,并在JavaFX中的标签上显示

print number in horizontally and reverse order and show on label in JavaFX

我试图以水平方式打印数字,然后以相反的顺序显示,现在,在下面的代码中,逻辑是正确的,并在控制台上显示数字imrpimi ok,如第二个链接所示,在javafx的标签中显示这些相同的值,显示与所需解决方案相反的结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class GridPane extends Application {

  @Override
  public void start(Stage primaryStage) {
    GridPane root = new GridPane();
    root.setPadding(new Insets(5));
    root.setAlignment(Pos.CENTER);
    for (int number = 8; number > 0; number--) {
      StringBuilder str = new StringBuilder();
      str.append(number);
      Label label = new Label(str.toString());
      System.out.println(str.toString());
      label.setFont(Font.font("Arial", FontWeight.BOLD, 13));
      label.setPrefSize(20, 20);
      root.add(label,0, number + 3);
    }

    Scene scene = new Scene(root, 900, 900);
    primaryStage.setTitle("Grid Pane Example");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

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

为了测试程序,我得到了输出http://i.imgur.com/jeh0zwp.jpg

目标是遵循这样的逻辑:控制台正确地显示结果,如http://i.imgur.com/jh9jas1.jpg

有什么建议,我很感谢。


root.add(...)的参数是要添加的节点、列索引和行索引。所以你总是在number + 3行添加显示number的标签:即8进入第11行,7进入第10行,等等。

迭代的顺序没有区别。

如果你想让1在第11行,2在第10行,3在第9行,等等,那么你必须注意到rowIndex = 12 - number和呼叫

1
root.add(label, 0, 12 - number);