程序运行时将项添加到JComboBox

时间:2017-04-28 18:10:37

标签: java user-interface jcombobox

我的程序有一个GUI,用户首先选择一个按钮来加载excel文件。然后excel文件的内容列在JTextArea和JComboBox中。正如您在图片中看到的,虽然JTextArea包含一些文本,但JComboBox是空的。我调试了代码,可以验证JComboBox的变量(TheGene)是否添加了该项。换句话说,str在每次迭代中都包含AARS,AARS2,....

enter image description here

描述JComboBox的示例在创建JComboBox后静态添加项目。我想在运行某些东西后添加项目(当按钮的工作完成时)。

我正在使用Netbeans的框架设计器,其中自动生成以下代码

public class TheFrame extends javax.swing.JFrame 
{
  ...
  private javax.swing.JComboBox<String> TheGene;
  private void initComponents() {
    ...
    TheGene = new javax.swing.JComboBox<>();
    TheGene.setMaximumRowCount(20);
    TheGene.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        TheGeneActionPerformed(evt);
      }
    });
    ...
  }
  private void TheGeneActionPerformed(java.awt.event.ActionEvent evt)
  {                                        
    // TODO add your handling code here:
    int n = theFile.getGeneNumberFromFile();
    for (int i = 0; i < n; i++){
      String str = theFile.getGeneNameFromFile( i );
      TheGene.addItem(str);
  }
}

1 个答案:

答案 0 :(得分:1)

您可以使用JComboBox的模型:

DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>();
JComboBox TheGene = new JComboBox( model );

然后点击Load Gene List按钮:

private void TheGeneActionPerformed(java.awt.event.ActionEvent evt)
{                       
    model.removeAllElements();               
    // TODO add your handling code here:
    int n = theFile.getGeneNumberFromFile();
    for (int i = 0; i < n; i++) {
      String str = theFile.getGeneNameFromFile( i );
      model.addElement(str);
   }
}

这应该填充组合的项目。