user1912404
user1912404

Reputation: 396

get all the checked items indices of the JCheckListBox

Hello am trying to get all the checked items indices of the checkbox list in a array. but apparently the method getCheckBoxListSelectedIndices(); is returning an empty array

package cct.karim;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import com.jidesoft.swing.CheckBoxList;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;

/**
 *
 * @author beastieux
 */

public class E_JCheckListBox extends JFrame implements ActionListener {
    protected JLabel loglabel;
    private CheckBoxList List; 
    public E_JCheckListBox()
    {
        super("Select RFQs to Export");

        loglabel=new JLabel("Log:                                   .");
        List=new CheckBoxList();
        CheckBoxList List = new CheckBoxList();
        JScrollPane scp=new JScrollPane();

        DefaultListModel lmdlEjemplo=new DefaultListModel();

        lmdlEjemplo.addElement("  Item 0  ");
        lmdlEjemplo.addElement("  Item 1  ");
        lmdlEjemplo.addElement("  Item 2  ");
        lmdlEjemplo.addElement("  Item 3  ");
        lmdlEjemplo.addElement("  Item 4  ");
        lmdlEjemplo.addElement("  Item 5  ");
        lmdlEjemplo.addElement("  Item 6  ");
        lmdlEjemplo.addElement("  Item 7  ");
        lmdlEjemplo.addElement("  Item 8  ");
        lmdlEjemplo.addElement("  Item 9  ");

        List.setModel(lmdlEjemplo);

        scp.add(List);
        this.add(scp);

        scp.getViewport().add(List);

        getContentPane().setLayout(new FlowLayout());
        this.setSize(300, 300);
        scp.setSize(300, 350);

        JPanel p = new JPanel();
        p.setSize(500, 500);
        p.setLayout(new BorderLayout());
        p.add(scp, BorderLayout.CENTER);
        p.add(loglabel, BorderLayout.SOUTH);
        p.setBorder(new TitledBorder(new EtchedBorder(),
        "Please select options:") );

        getContentPane().add(p);
        JButton k= new JButton("Export");
        k.addActionListener(this);

        k.setMaximumSize(new Dimension(1, 1));
        add(k);
    //  pack();
        setVisible(true);
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    }

    public static void main(String args[]) {
        E_JCheckListBox obj = new E_JCheckListBox();
        obj.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        int k[]=List.getCheckBoxListSelectedIndices();
        System.out.println(k[0]);
    }
}

This is the exeption I got:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 
at cct.karim.E_JCheckListBox.actionPerformed(E_JCheckListBox.java:92)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

am i missing something because am new to GUI programming ?

Upvotes: 0

Views: 437

Answers (1)

pratikch
pratikch

Reputation: 680

The problem appears to be simple. You have instance variable and method variable both name same. List is declared as instance variable and used in ActionListner but same is used to create a local variable so the local got preference in constructor.

Erroneous code is corrected below should work.

private CheckBoxList List; 
        public E_JCheckListBox()
        {
            super("Select RFQs to Export");

            loglabel=new JLabel("Log:                                   .");
            List=new CheckBoxList();
//            CheckBoxList List = new CheckBoxList();
            JScrollPane scp=new JScrollPane();

Also, please add for length checking in array before accessing it's elements. In Java Array indexes are strongly checked.

Upvotes: 1

Related Questions