我在Java中有一个按钮事件中的代码,我在面板中添加标签,问题是当我尝试访问一个属性,比如我的JLabel数组元素的X位置时,它给了我一个{{ 1}},但是当我在添加标签后在另一个按钮中执行它时,它可以工作!
按下按钮时如何获取mi标签的x位置?
NullPointerException
答案 0 :(得分:2)
你正在使用“魔术”数字,并且应该避免这样做,但更重要的是,你应该理解Java中的数组是基于0的,这意味着8个项目的数组从第0项到第7项。你是试图获得超出数组限制的项目。
所以而不是
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
gridLabels=new JLabel[8];
panel.setLayout(new GridLayout(1,8));
for (int i = 0; i < 7; i++)
{
gridLabels[i]=new JLabel();
panel.add(gridCartasJ1[i]);
}
执行:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
gridLabels=new JLabel[8];
panel.setLayout(new GridLayout(1,8));
for (int i = 0; i < gridLabels.length; i++)
{
gridLabels[i]=new JLabel();
panel.add(gridCartasJ1[i]);
}
并且不要尝试使用等于或超出长度值的数组项,因为您将导致ArrayIndexOutOfBounds异常。
答案 1 :(得分:0)
好的......
通过gridLabels [6]
初始化gridLabels [0]for (int i = 0; i < 7; i++)
然后你解决gridLabels [7]
int X = gridLabels[7].getX();
你可能想要
for (int i = 0; i <= 7; i++)
或
for (int i = 0; i < 8; i++)
答案 2 :(得分:0)
您超出了gridLabels数组的限制。您正在填充数组0到6,而不是7。