Обновить JComboBox - PullRequest
       5

Обновить JComboBox

1 голос
/ 09 марта 2012

У меня есть поле со списком, как вы можете видеть в коде, который берет значения из таблицы.Поэтому после нажатия кнопки ОК значения таблицы изменятся.Как я могу увидеть эти новые значения в компобоксе, не закрывая и не открывая jframe?Сегодня я много изучал java.awt.EventQueue.invokeLater и других сотрудников, но не могу заставить его работать, я новичок в java и в общем программировании.Итак, вот код:

public class Compo extends JFrame implements ActionListener
{//start of class Compo 
//start of variables
private JComboBox<String> CompoBox;
private String array[];
private JButton okButton;
private JPanel panel;
//end of variables
public Compo ()
{//start of Compo method
  super("Example"); 
    panel=new JPanel(null);

   //table =  new String[3];
   array= new String[3];
   array[0]="alpha";
   array[1]="beta";
   array[2]="charlie";

   CompoBox= new JComboBox<>(array);
   CompoBox.setBounds(50, 70, 100, 20);
   panel.add(CompoBox);
   okButton=new JButton("ok");
   okButton.setBounds(50, 120, 70, 30);
   okButton.setActionCommand("ok");
   okButton.addActionListener(this);
   panel.add(okButton);
   add(panel);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setSize(200, 200);
   setVisible(true);


}//end of compo method
@Override
public void actionPerformed(ActionEvent event)
    {//start of actionperformed
    String testString=event.getActionCommand();
    if (testString.equals("ok"))
    {//start of if
        for (int i = 0; i < array.length; i++)
        {
             String sample= array[i];
             array[i]=sample+"aa";

        }
    }//end of if
}//end of aciton performed


}//end of class Compo 

Ответы [ 2 ]

6 голосов
/ 09 марта 2012

это должен быть ответ, который вы ищете, надеюсь, вы примете его:

    if (testString.equals("ok")) {
        CompoBox.removeAllItems();
        for (int i = 0; i < array.length; i++) {
            String sample = array[i];
            CompoBox.addItem(sample + "aa");
        }
    }

Кстати. общая comqo-pox делается так:

CompoBox = new JComboBox<String>(array);
2 голосов
/ 09 марта 2012

Вы можете либо использовать методы addItem(...) и removeItem(...) в комбинированном ящике напрямую, либо указать свой собственный ComboBoxModel и изменить данные в этой модели.

Хотя я обычно хотел бы использоватьПоследний вариант (т.е. моя собственная модель), для вашего уровня квалификации, я бы предложил сначала начать с методов добавления / удаления.

Позже вы можете захотеть поработать над моделью по умолчанию (которая относится к классу DefaultComboBoxModel).и реализует MutableComboBoxModel).Имейте в виду, однако, что вам понадобится приведение и убедитесь, что вы получите модель правильного типа в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...