2012-09-23 64 views
-1

这里是我的snippet.It返回一个空指针exception..jlabel1已经被设置和工作阵列挥杆对象返回空指针异常

JLabel j[]=new JLabel[10]; 
i=0;  
j[i]=new JLabel(); 
j[i].setText("1"); 
this.add(j[i]); 

编辑(从评论)

JLabel j[]=new JLabel[50]; 
try { 
    Rectangle bounds = jLabel1.getBounds(); 
    j[i].setText("1"); 
    this.add(j[i]); 
    j[i].setBounds(jLabel1.getX(),jLabel1.getY()+50 ,jLabel1.getHeight(),jLabel1.getWidth()); } catch(Exception e) { 
    System.out.println(e.toString()); 
} 
+2

凡位于此代码?哪种方法/功能? – Borgleader

+3

在你的问题中没有jlabel1,jlabel1“已经设置并正在工作” – munyengm

+0

为了更好地理解异常,打印一个堆栈跟踪。 –

回答

3

的问题是,你忘了

j[i] = new JLabel(); 
在您的评论张贴片段

(虽然它被列入在你的问题)。

A NullPointerException通常很容易调试,因为您只需按照堆栈跟踪来发现究竟是什么null。如果有疑问,只需在该行上放置一个断点并使用调试器即可。

要获得堆栈跟踪,你可以使用e.printStackTrace()或者干脆删除try catch块(因为它是不好的做法,简单地对所有异常一try catch块)

+0

罗宾它的工作。感谢很多家伙。 – harry4

3

评论太短。尝试张贴SSCCE

这似乎为我工作:

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public class Test { 

    protected void initUI() { 
     final JFrame frame = new JFrame(); 
     frame.setTitle("Test JLabel"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     class TestPanel extends JPanel { 
      int i; 

      public TestPanel() { 
       JLabel j[] = new JLabel[10]; 
       i = 0; 
       j[i] = new JLabel(); 
       j[i].setText("1"); 
       this.add(j[i]); 
      } 
     } 
     frame.add(new TestPanel()); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new Test().initUI(); 
      } 
     }); 
    } 

} 
+0

JLabel j [] = new JLabel [50]; 尝试 { Rectangle bounds = jLabel1.getBounds(); j [i] .setText(“1”); this.add(j [i]); (jLabel1.getX(),jLabel1.getY()+ 50,jLabel1.getHeight(),jLabel1.getWidth()); (异常e) { } System.out.println(e.toString()); } 这段代码给出了java.lang.NullPointerException – harry4

+0

@HarshitSharaff如果没有一个完整的例子(SS ** C ** CE)很难说清楚。 jLabel1为null或j [i]为。没有语境,我们无法帮助你。我们不是疯狂的猜测大师。 –