2013-10-04 6 views
2

У меня есть 3 comboboxes, после выбора первого combobox, остальные должны быть обновлены, но мой код, похоже, не работает. Пожалуйста, помогите этим парням. Вот мой код (так как мой код очень длинный, поэтому я напишу только часть ошибки).Как обновить экземпляры JComboBox в Swing?

// 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

Смежные вопросы