我试图做到这一点,以便当单击按钮时,我可以更改其属性之一。
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/