2013-01-02 1 views
0

안녕하세요, 배열의 체크 박스 목록의 모든 체크 항목 인덱스를 가져 오려고합니다. 하지만 분명히 getCheckBoxListSelectedIndices(); GUI 프로그래밍에 새로운 오전 있기 때문에JCheckListBox의 모든 체크 항목 인덱스를 얻으십시오

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) 

내가 뭔가를 놓친 거지 : 하늘의 배열

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]); 
    } 
} 

을 반환 이것은 내가 가진 exeption은?

+0

'List = new CheckBoxList(); CheckBoxList List = 새 CheckBoxList(); 그것은 무엇입니까? –

+0

대문자에서 필드를 호출하지 마십시오 –

답변

1

문제는 간단합니다. 인스턴스 변수와 메소드 변수는 모두 이름이 같습니다. List는 인스턴스 변수로 선언되어 ActionListner에서 사용되지만 로컬 변수가 생성자에 사용되도록 로컬 변수를 만드는데도 사용됩니다.

아래와 같은 오류 코드는 수정해야합니다.

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(); 

또한 요소에 액세스하기 전에 길이 검사를 배열에 추가하십시오. Java Array 인덱스가 강력하게 검사됩니다.

+0

oups 죄송합니다. 내 잘못 :) – user1912404

+0

해당 줄을 수정하면 문제가 해결됩니다. 확인해주십시오. 도움을 주신 – pratikch

+0

thx – user1912404