按钮单击时向面板添加标签

时间:2013-05-11 23:25:14

标签: java grid nullpointerexception awt label

我在Java中有一个按钮事件中的代码,我在面板中添加标签,问题是当我尝试访问一个属性,比如我的JLabel数组元素的X位置时,它给了我一个{{ 1}},但是当我在添加标签后在另一个按钮中执行它时,它可以工作!

按下按钮时如何获取mi标签的x位置?

NullPointerException

3 个答案:

答案 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。