2012-03-02 78 views
0

我正努力根據組合框中給定值之一顯示一些jtextfield。JCombobox和JTextfield

因此,我將有一個下拉菜單,讓我們說1到4.如果用戶選擇數字3,則會顯示3個文本字段。我用一些數字創建了jcombobox。但我不知道如何實現這一點。如果我沒有記錯的話,我需要使用

ItemEvent.SELECTED 

我想我需要創建JTextField的對象,將提供給JcomboBox的的ItemListener對象的引用。

任何幫助將不勝感激。

我已經添加到了我的課:

// aOption is the combobox I declared 
aOptionComboBox.setModel(new DefaultComboBoxModel(new String[]{"1","2","3"})); 

public void itemStateChanged(ItemEvent event) { 

    String num = (String)aOptionComboBox.getSelectedItem(); 
    int num1 = Integer.parseInt(num); 
    JTextField[] textfields = new JTextField[num1]; 

    for (int i = 0; i < num1; i++) 
    { 
     textfields[i] = new JTextField("Field"); 
     getContentPane().add(textfields[i]); 
     textfields[i].setBounds(200, 90, 100, 25); 

    } 
} 

我是在正確的軌道?

+0

*「我在正確的軌道上嗎?」*可能不是,如果代碼使用'setBounds'。 ***使用佈局***。此外,爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-03-02 06:27:05

+0

當您嘗試時發生了什麼:-)提示:您可能想要刪除先前添加的所有字段。另外:如果這是家庭作業,請標記爲 – kleopatra 2012-03-02 10:48:24

+1

「我在正確的軌道上?」,答案是肯定你是錯誤的軌道上。由於您的for循環內部,由@AndrewThompson非常建議您,不要使用** setBounds **。但假設你仍然使用它,並不是所有你創建的'JTextFields'都放在另一個頂部,在同一個位置。那麼你怎麼看你的'JFrame'有多少? – 2012-03-02 11:47:50

回答

1

使用組合框上的getSelectedItem()。這將產生一個字符串或一個整數(取決於你如何實現它)。接下來使用for循環來確定JTextField的數量並將它們存儲在數組中。

int amount = myJComboBox.getSelectedItem(); 

JTextField[] textfields = new JTextField[amount]; 

for (int i = 0; i < amount; i++) { 
textfields[i] = new JTextField("awesome"); 
this.add(textfields[i]); 
} 

這樣,您可以輕鬆存儲文本字段並將其添加到面板。

一些添加的信息。

textfield-array必須在eventListener之外訪問,所以你必須在你的類中實現它。這樣整個班級都可以使用它。

+0

我已經添加到了我的課: 公共無效itemStateChanged(一個ItemEvent事件){ /* -a選項是我宣佈 aOptionComboBox.setModel(新DefaultComboBoxModel組合框(新的String [] { 「1」,」 2" , 「3」})); */ String num =(String)aOptionComboBox.getSelectedItem(); int num1 = Integer.parseInt(num); JTextField [] textfields = new JTextField [num1]; (int i = 0; i nothingme 2012-03-02 02:35:41

+0

@nothingme請將該代碼編輯到您的問題(並使用代碼格式)。目前它是不可讀的。 – 2012-03-02 06:25:21

相關問題