0

我有以下代码,并且在这一行得到 NullPointerException:

Component storeAll[]=checkPanel.getComponents(); 

编码:

public class Scroll extends JFrame implements ActionListener  {  

private HashMap<JCheckBox, ArrayList<Integer>> map = new HashMap<>();
JPanel checkPanel;

private static int MAX_CHECKS = 100;

public Scroll() {
    super();
    setLayout(new BorderLayout());

    JPanel checkPanel = new JPanel(new GridLayout(0, 1));
    checkPanel.setLayout(new FlowLayout()); 

    JCheckBox checkBox;
    Random r = new Random();

    for (int i = 0; i < MAX_CHECKS; i++) {
        StringBuilder sb = new StringBuilder();
        ArrayList<Integer> a = new ArrayList<>();
        for (int j = 0; j < 2; j++) {
            Integer temp = (r.nextInt()) % 100;
            a.add(temp);
            sb.append(temp).append(" ");
        }

        checkBox = new JCheckBox(sb.toString().trim());
        checkBox.setName("CheckBox" + i);

        map.put(checkBox, a);
        checkPanel.add(checkBox);
    }

    add(checkPanel,BorderLayout.CENTER); 
    JButton startButton = new JButton("Start");
     add(startButton, BorderLayout.SOUTH);
     startButton.addActionListener(this); 

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
     setSize(800, 800); 
     setVisible(true);


}

        public void actionPerformed(ActionEvent event) {

             Component storeAll[]=checkPanel.getComponents(); 

                for(Component c:storeAll){
                      if(((JCheckBox)c).isSelected())  
                 {  
                  checkPanel.remove(c);  
                  checkPanel.revalidate();  
                  validate();  
                  repaint();  
                 }  

                 else  
                 {  
                  JOptionPane.showMessageDialog(this,"No button to remove");  
                 }  
                }
        }

        public static void main(String[] args) {   

            Scroll asds = new Scroll();
             }   
    }
4

0 回答 0