这是我的片段。它返回一个空指针异常.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());
}
答案 0 :(得分: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();
}
});
}
}
答案 1 :(得分:3)
问题是你忘记了
j[i] = new JLabel();
在您在评论中发布的代码段中(尽管它已包含在您的问题中)。
NullPointerException
通常很容易调试,因为您只需要按照堆栈跟踪来发现究竟是什么null
。如果有疑问,您只需在该行上放置一个断点并使用调试器。
要获取堆栈跟踪,您可以使用e.printStackTrace()
或只删除try catch
块(因为所有异常都只有try catch
块是不好的做法)