-1

ここに私のスニペットがあります.それはnullポインタ例外を返します..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()); 
} 
4

2 に答える 2

3

問題は、あなたが

j[i] = new JLabel();

コメントに投稿したスニペットで(ただし、質問には含まれていました)。

ANullPointerExceptionは通常、スタック トレースをたどって正確にnull. 疑わしい場合は、その行にブレークポイントを配置して、デバッガーを使用してください。

スタックトレースを取得するには、ブロックを使用するe.printStackTrace()か、単にブロックを削除できます (すべての例外に対してtry catch単純にブロックを作成するのは悪い習慣であるため)。try catch

于 2012-09-23T19:27:24.907 に答える
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();
            }
        });
    }

}
于 2012-09-23T18:57:09.967 に答える