刷新JComboBox

时间:2012-03-09 14:00:13

标签: java swing jcombobox

我有一个组合框,你可以在代码中看到从表中获取值。 所以在我点击确定后,表格的值会发生变化。 如何在不关闭和打开jframe的情况下看到compobox的这些新值? 我今天做了很多关于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 个答案:

答案 0 :(得分:6)

这应该是您正在寻找的答案,希望您接受它:

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

答案 1 :(得分:2)

您可以直接在组合框上使用addItem(...)removeItem(...)方法,也可以提供自己的ComboBoxModel并更改该模型中的数据。

虽然我一般都喜欢使用后一种选择(即我自己的模型),但是对于你的技能水平,我建议先从添加/删除方法开始。

稍后您可能希望使用默认模型(类DefaultComboBoxModel并实现MutableComboBoxModel)。但请记住,在这种情况下,您需要演员并确保获得正确类型的模型。