我有这段代码,我正在尝试将 MouseListener 添加到 JTextFields
的 2D 数组中。我收到 NullPointerException
并且不确定我哪里做错了。这是我正在使用的一些变量。
private int totalX = 20;
private int totalY = 20;
private JTextField[][] fields;
fields = new JTextField[totalX][totalY];
for (y = 0; y < totalY; y++) {
for (x = 0; x < totalX; x++) {
fields[x][y].addMouseListener(this);
new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
for (y = 0; y < totalY; y++) {
for (x = 0; x < totalX; x++) {
if (fields[x][y].hasFocus()) {
if (value == null) {
value = "W";
} else {
fields[x][y].setText(value);
}
}
}
}
Draw();
}
};
}
}
最佳答案
您应该在使用数组中的所有元素之前对其进行初始化,因为此行创建了一个内部包含 nulls
的数组
fields = new JTextField[totalX][totalY];
所以提前创建一个新的数组元素
fields[x][y] = new JTextField();
fields[x][y].addMouseListener(this);
顺便说一句,您的代码看起来有点奇怪,您创建了一个新的 MouseAdapter() 但不使用它。因此,它将被垃圾收集。
更新:您应该将 new MouseAdapter()
作为 addMouseListener()
方法的参数
fields[x][y].addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
... Put your code here ...
});
关于java - 尝试将监听器添加到 JTextFields 数组时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44480629/