代码之家  ›  专栏  ›  技术社区  ›  ralph

通过单击jbutton将元素从jtextarea添加到jlist

  •  1
  • ralph  · 技术社区  · 12 年前

    我有一个jtext字段,我可以在其中添加一个元素,通过点击一个按钮,我想将它添加到jlist中, 现在我遇到的问题是,通过点击按钮,它会添加我想要的元素,但当我将另一个元素添加到列表中时,旧的元素不见了,新的元素出现在它的位置。 这是我的代码:

     private void addActionPerformed(java.awt.event.ActionEvent evt) {                                    
    
        DefaultListModel  model1= new DefaultListModel();
    
        model1.addElement(desc.getText());
        jList2.setModel(model1);
        jList2.setSelectedIndex(0);
        desc.setText("");
    } 
    

    有人能帮我吗? 非常感谢。

    4 回复  |  直到 12 年前
        1
  •  2
  •   Korhan Ozturk    12 年前

    每次单击该按钮时,您都会创建一个新的DefaultListModel,并将该元素添加到这个全新的列表中。因此,您不能将它们全部添加到同一列表中。

    而是在之外定义DefaultListModel模型1 addActionPerformed 方法,并使用对内部对象的引用,如下所示:

    DefaultListModel  model1= new DefaultListModel();
    
    private void addActionPerformed(java.awt.event.ActionEvent evt) {                                     
          model1.addElement(desc.getText());
          jList2.setModel(model1);
          jList2.setSelectedIndex(0);
          desc.setText("");
    
    } 
    
        2
  •  1
  •   Reimeus    12 年前

    您正在更换 JList 每次单击 JButton 。相反,您可以使用单个 DefaultListModel 在启动时处于类级别并添加到其中。

        3
  •  0
  •   Biswajit    12 年前
        listModel = new DefaultListModel();
        listModel.addElement("Jane Doe");
        listModel.addElement("John Smith");
        listModel.addElement("Kathy Green");
    
    
        list = new JList(listModel);
    public void actionPerformed(ActionEvent e) {
        int index = list.getSelectedIndex();
        listModel.remove(index);
    
        int size = listModel.getSize();
    
        if (size == 0) { //Nobody's left, disable firing.
            fireButton.setEnabled(false);
    
        } else { //Select an index.
            if (index == listModel.getSize()) {
                //removed item in last position
                index--;
            }
    
            list.setSelectedIndex(index);
            list.ensureIndexIsVisible(index);
        }
    }
    
        4
  •  0
  •   BenMorel Manish Pradhan    12 年前
    // Only once (may be in constructor),
    // don't put this code in ActionListener method actionPerformed().
    DefaultListModel model1 = new DefaultListModel(); 
    

    保持代码原样。

    推荐文章