【问题标题】:assign index to array of buttons?为按钮数组分配索引?
【发布时间】:2016-11-27 14:59:39
【问题描述】:

我在 JavaFX 中创建了一个带有 for 循环和数组的按钮矩阵。 现在我想给按钮赋值。

这是我的代码:

int SIZE = 10;
int length = SIZE;
int width = SIZE;

GridPane root = new GridPane();

matrix = new Button[width][length]; 
matrix[0][0] = 1;


for(int y = 0; y < length; y++)
{
        for(int x = 0; x < width; x++)
        {
            Random rand = new Random();


            int rand1 = rand.nextInt(2);
            matrix[x][y] = new Button(/*"(" + rand1 + ")"*/); 
            matrix[x][y].setText("(" + rand1 + ")");   
            matrix[x][y].setOnAction(new EventHandler<ActionEvent>() {

                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Random Binary Matrix (JavaFX)");
                }
            });

            root.add(matrix[x][y], y, x);
        }
}  

这部分的 Eclipse 错误: 矩阵[0][0] = 1;

非常感谢您的帮助!

【问题讨论】:

  • 当然你不能将int分配给输入Button。这就是为什么matrix[x][y] = new Button(); 有效但matrix[0][0] = 1; 无效。无论如何,你想达到什么目的?
  • 感谢您的回答。我必须开发一个游戏,其中包括一个按钮矩阵。在第一步中,一行按钮变得不可见,在第二步中,矩阵正在重建所有按钮,用户必须单击矩阵中的确切路线。
  • @Mike 我认为上一条评论中的问题是:你想用代码matrix[0][0]=1 实现什么?该代码没有意义(您不能将1 分配给Button)。你期望它实际做什么?

标签: arrays for-loop button javafx


【解决方案1】:

您可以使用列表,我认为更适合:

// 1 dimension
List<Button> btns = new ArrayList<>(10); 
// 2 dimensions                  
List<List<Button>> btns = new ArrayList<>(10);
btns.get(0).get(0).setText("Hi");

我没试过:

for(List list: btns){

  for(Button btn: (List<Button>) list){

      //Edit for each button !

  }

}

【讨论】:

  • 感谢您的回答。我以前从未使用过arrayList。如何在 for 循环中实现 ArrayList?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
相关资源
最近更新 更多