单击时Javafx2修改按钮

标签 java button javafx event-listener

我试图做到这一点,以便当单击按钮时,我可以更改其属性之一。

class Tile extends Button{
  public int position[];
  public Tile(){
    super();
    position = 0;
  }

 }

初始化位置:

{
  Tile tiles [][] = new Tile[10][10];
  for(int i=0; i<10; i ++){
    for(int j =0; j<10; j++){
      tiles[i][j].position = i*10+j;
      tiles[i][j].addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>(){
                @Override
                public void handle(MouseEvent e) {
                    System.out.println(((Tile)(e.getSource())).position[1]); //this results in a null pointer
                }
            });
    }
  }
}

我希望程序在单击时打印出图 block 中的位置值。有什么方法可以访问事件所引用的对象吗? 我真的只需要知道单击了数组中的哪个图 block 。 编辑: 当我尝试使用 e.getSource() 时,出现 NullPointerException

最佳答案

该位置被声明为一个数组,但您却将其用作一个 Int。

将其更改为简单的 int 应该可以解决您的问题。

class Tile extends Button{
  public int position;
  public Tile(){
    super();
    position = 0;
  }

 }

初始化方法:

{
  Tile tiles [][] = new Tile[10][10];
  for(int i=0; i<10; i ++){
    for(int j =0; j<10; j++){
      tiles[i][j].position = i*10+j;
      tiles[i][j].addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>(){
                @Override
                public void handle(MouseEvent e) {
                    System.out.println(((Tile)(e.getSource())).position);
                }
            });
    }
  }
}

关于单击时Javafx2修改按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21288493/

相关文章:

java - ImageView 仅显示循环中的最后一张图像

javascript - 如何一键多次更改背景颜色(请仅使用 JavaScript)?

javascript - 添加一个按钮到 javascript 测验的末尾,使用与 HTML 文件中使用的相同样式的按钮

c++ - 在 Tic Tac Toe C++ 中使用 "New Game"按钮,win32 应用初学者

java.util.vector 无法转换为 javax.collections.observablelist

java - 背景图像不工作 javaFX

java - 如何使用java检查Excel文件是否有更新

java - JToolbar背景图片

java - 如何使用 BufferedReader 向上移动 .txt 文件中的行?

javafx - 在 javafx 中将整数转换为 ObservableValue<Integer>