2012-03-09 77 views
1

我有一個組合框,您可以在從表中獲取值的代碼中看到它。 因此,我點擊確定後,表的值發生變化。 如何在不關閉並打開jframe的情況下查看組合框的這些新值? 我今天對java.awt.EventQueue.invokeLater和其他工作人員進行了大量研究,但是我不能使它工作,我是java的新手和一般編程人員。 所以這裏是代碼:刷新JComboBox

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 
+0

我如何在3天內給我留下印象,我在這裏訂閱? – Vagelism 2012-03-09 14:10:43

+0

請學習java命名約定,並堅持使用它 – kleopatra 2012-03-09 14:20:13

+0

現在的問題是,按鈕的工作僅僅是第一次點擊! – Vagelism 2012-03-09 14:25:34

回答

6

這應該是你正在尋找的答案,希望你能接受它:

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

BTW。通用comqo痘像這樣做:

CompoBox = new JComboBox<String>(array); 
+0

我會試試看,現在就寫!謝謝! – Vagelism 2012-03-09 14:18:26

2

您可以直接使用該組合框的addItem(...)removeItem(...)方法,或提供自己的ComboBoxModel並更改該模型中的數據。

儘管我一般喜歡使用後一種選項(即我自己的模型),但對於您的技能水平,我建議先從添加/刪除方法開始。

稍後,您可能想要使用默認模型(其類別爲DefaultComboBoxModel並實施MutableComboBoxModel)。請記住,在這種情況下,您需要演員陣容,並確保您獲得了正確類型的模型。

+0

謝謝你的回答。最後它適用於正在運行的代碼。 – Vagelism 2012-03-09 14:21:41