空指针是你的label[]数组没有初始化。
你试一下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class tables implements ActionListener
{

String[] BigProblem={"大问题一","大问题二"};
String[] problem={"问题一","问题二","问题三","问题四","问题五","问题六","问题七",
"问题八","问题九","问题十"};
Font fonts=new Font("宋体",Font.PLAIN,12);
JFrame aWindow=null;
JCheckBox[] checkBox;
JPanel panel=null;
JLabel[] label = new JLabel[10];
int wid = 20;
int hei = 20;

public tables()
{
aWindow=new JFrame("Testing.....");
Container content=aWindow.getContentPane();
Toolkit theKit=aWindow.getToolkit();
Dimension wndSize=theKit.getScreenSize();
aWindow.setBounds(0,0,wndSize.width,wndSize.height);
JButton button1=new JButton("动态生成控件");
button1.setFont(fonts);
button1.addActionListener(this);

panel=new JPanel();
content.add(panel);
panel.setLayout(new FlowLayout());
panel.add(button1,null); // button1.setLocation(wid,hei);

aWindow.setVisible(true);
aWindow.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}

public void actionPerformed(ActionEvent e)
{
//JOptionPane.showMessageDialog(aWindow,"事件成功","窗体信息",
//JOptionPane.PLAIN_MESSAGE);
int big=BigProblem.length;
int small=problem.length;

for(int i=0;i<big;i++)
{
System.out.println(BigProblem[i]);
JLabel labe=new JLabel(BigProblem[i]);
//label[i].setText(BigProblem[i]);
panel.add(labe,null);
//label[i].setLocation(wid+20,hei+20);

}
this.panel.updateUI();
}

public static void main(String[] args)
{
new tables();
}
}

解决方案 »

  1.   

    你的label[]还没分配就用了,当然空指针,Java的动态数组不是这样用的你的代码太乱,我给你删了一点,更简单清晰一些,另外我的操作系统,软件全是英文的,字体和文本给你改成了英文import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;public class tables implements ActionListener
    {

    String[] BigProblem={"big1","big2"};
    String[] problem={"1","2","3","4","5","6","7","8","9","10"}; JFrame aWindow=null;
    JCheckBox[] checkBox;
    JPanel panel=null;
    JLabel[] label = new JLabel[BigProblem.length];;

    public tables()
    {
    aWindow=new JFrame("Testing.....");
    panel=new JPanel();
    JButton button1=new JButton("Dynamic Create"); aWindow.setBounds(0,0, 300,300);
    aWindow.getContentPane().add(panel);
    panel.add(button1);

    button1.addActionListener(this);

    aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    aWindow.setVisible(true);
    }
    public void actionPerformed(ActionEvent e)
    {
    JOptionPane.showMessageDialog(aWindow,"Sucess","Frame Info",
    JOptionPane.PLAIN_MESSAGE);
    int big=BigProblem.length;
    int small=problem.length;

    for(int i=0;i<big;i++)
    {
    label[i]=new JLabel(BigProblem[i]);
    panel.add(label[i]);
    panel.validate();
    System.out.println(label[i]);
    }
    }

    public static void main(String[] args)
    {
    new tables();
    }
    }
      

  2.   

    已经初始化了label,还是出现空指针问题,是那里写错了?
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    public class tables implements ActionListener
    {

    String[] BigProblem={"大问题一","大问题二"};
    String[] problem={"问题一","问题二","问题三","问题四","问题五","问题六","问题七",
    "问题八","问题九","问题十"};
    Font fonts=new Font("宋体",Font.PLAIN,12);
    JFrame aWindow=null;
    JCheckBox[] checkBox;
    JPanel panel=null;
    JLabel[] label = new JLabel[10];
    int wid = 20;
    int hei = 20;

    public tables()
    {
    aWindow=new JFrame("Testing.....");
    Container content=aWindow.getContentPane();
    Toolkit theKit=aWindow.getToolkit();
    Dimension wndSize=theKit.getScreenSize();
    aWindow.setBounds(0,0,wndSize.width,wndSize.height);
    JButton button1=new JButton("动态生成控件");
    button1.setFont(fonts);
    button1.addActionListener(this);

    panel=new JPanel();
    content.add(panel);
    panel.setLayout(new FlowLayout());
    panel.add(button1,null); button1.setLocation(wid,hei);

    aWindow.setVisible(true);
    aWindow.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    }

    public void actionPerformed(ActionEvent e)
    {
    int big=BigProblem.length;
    int small=problem.length;

    for(int i=0;i<big;i++)
    {
    label[i].setText(BigProblem[i]);
    panel.add(label[i]);
    //label[i].setLocation(wid+20,hei+20);

    }
    this.panel.updateUI();
    }

    public static void main(String[] args)
    {
    new tables();
    }
    }
    谢谢。
      

  3.   

    label[i] = new JLabel(BigProblem[i]);
    你只是分配了数组空间,实际上还未初始化。