2013-10-04 5 views
2

3 개의 콤보 박스가 있습니다. 첫 번째 콤보 박스를 선택하면 나머지는 업데이트해야하지만 내 코드는 작동하지 않는 것 같습니다. 이 사람들을 도와주세요. 여기에 내 코드가있다. (내 코드가 너무 길어서 오류 부분 만 쓸 것이다.) 사전에Swing에서 JComboBox 인스턴스를 업데이트하는 방법은 무엇입니까?

// example code 
public class GuiComponents { 
    JComboBox<String> comboBox1, comboBox2, comboBox3; 

    public GuiComponents() { 
    ......... 
    ......... 


    String[] element1 = {"item1", "item2", "item3"}; 
    String[] element2 = {"item1", "item2", item3}; 
    String[] element3 = {"item1", "item2", "item3"}; 

    comboBox1.addItemListener(new ItemListener() { 

     @Override 
     public void itemStateChanged(ItemEvent event) { 
      if(event.getStateChange() == ItemEvent.SELECTED) { 
     // how do I update 2 comboboxes, upon selecting combobox1. 
        // combox2 should update as(element2) and 
        // combox3 should update as element3. 
      } 
     } 
    }); 
    } 
} 

감사합니다 .... 당신의 의도는 사용자가 항목을 선택할 때 콤보 상자의 값을 변경하는 경우

+0

* "(내 코드가 너무 길기 때문에 오류 부분 만 작성합니다.) * 더 빨리 도움을 받으려면 [SSCCE] (http : //sscce.org/). * "내 코드가 작동하지 않는 것 같습니다."* 무엇을 시도 했습니까? 코드 스 니펫은 아무것도 시도하지 않습니다. "// 여기에 내 작업을 완료하십시오."라고 읽습니다. –

+0

여기에 모든 코드를 게시해야합니까? – user1874936

+0

@ user1874936 문제를 보여주는 실행 가능한 예제 ... – MadProgrammer

답변

2

, 그럼 당신은 ActionListener를 사용하는 것이 더 낫다.

당신은 사용자가 (예, 이것은 다른 이벤트, 그리고) 드롭 다운 목록에서 다른 항목을 선택할 때마다 업데이트하는 콤보 상자에 원하는 경우에, 당신은 ItemListener

그러나의를 사용해야합니다 두 경우 모두 프로세스가 동일합니다 ...

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.DefaultComboBoxModel; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class ComboBoxUpdates { 

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

    public ComboBoxUpdates() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     private JComboBox<String> cb1, cb2, cb3; 

     public TestPane() { 
      cb1 = new JComboBox<>(new String[]{"Click me", "Click me", "Click them"}); 
      cb2 = new JComboBox<>(); 
      cb3 = new JComboBox<>(); 
      setLayout(new GridBagLayout()); 
      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.gridwidth = GridBagConstraints.REMAINDER; 
      add(cb1, gbc); 
      add(cb2, gbc); 
      add(cb3, gbc); 

      cb1.addActionListener(new ActionListener() { 
       @Override 
       public void actionPerformed(ActionEvent e) { 
        cb2.setModel(new DefaultComboBoxModel<String>(new String[]{"item1", "item2", "item3"})); 
        cb3.setModel(new DefaultComboBoxModel<String>(new String[]{"item4", "item5", "item6"})); 
       } 
      }); 
     }  
    } 
} 
+0

많은 분들께 감사드립니다. – user1874936

+0

@ user1874936 변경 사항 : P – MadProgrammer

관련 문제