JCombobox和JTextfield

问题描述:

我正努力根据组合框中给定值之一显示一些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

使用组合框上的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