【问题标题】:JList add/remove ItemJList 添加/删除项目
【发布时间】:2011-07-09 22:30:21
【问题描述】:

您好,我必须从一个 JList 中选择一个元素到另一个,然后从第一个中删除它 我创建的方法仅插入一个元素,覆盖最后一个元素,并且不会从第一个 JList 中删除所选项目 代码如下:

第一个列表

private javax.swing.JList listaRosa;

通过这种方法填充:

private void visualizzaRosaButtonvisualizzaRosa(java.awt.event.ActionEvent evt) {                                                    
    // TODO add your handling code here:
    visualizzaSquadraSelezionata();
    String fileSquadra;
    fileSquadra = squadraDaVisualizzare.getText();
    DefaultListModel listModel = new DefaultListModel();
    try {
        FileInputStream fstream = new FileInputStream("C:/Users/Franky/Documents/NetBeansProjects/JavaApplication5/src/javaapplication5/Rose/"+fileSquadra+"");
        // Get the object of DataInputStream
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String strLine;
        //Read File Line By Line
        while ((strLine = br.readLine()) != null)   {
            listModel.addElement(strLine);
            System.out.println(strLine);
        }
        listaRosa.setModel(listModel);
        //Close the input stream
        in.close();
    } catch (Exception e) {
    }

第二个列表,我想插入从第一个列表中删除的项目:

private javax.swing.JList listaTitolari

这是不工作的代码:

private void aggiungiTitolareButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                       
    // TODO add your handling code here:
    DefaultListModel listModel = new DefaultListModel();
    String daInserire;
    listModel.addElement(listaRosa.getSelectedValue());
    listModel.removeElement(listaRosa.getSelectedValue());
    listaTitolari.setModel(listModel);
} 

谢谢

【问题讨论】:

    标签: java swing add jlist


    【解决方案1】:

    问题是

    listModel.addElement(listaRosa.getSelectedValue());
    listModel.removeElement(listaRosa.getSelectedValue());
    

    您可能正在添加一个元素并立即删除它,因为添加和删除操作都在同一个 listModel 上。

    试试

    private void aggiungiTitolareButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                       
    
        DefaultListModel lm2 = (DefaultListModel) listaTitolari.getModel();
        DefaultListModel lm1  = (DefaultListModel) listaRosa.getModel();
        if(lm2 == null)
        {
            lm2 = new DefaultListModel();
            listaTitolari.setModel(lm2);
        }
        lm2.addElement(listaTitolari.getSelectedValue());
        lm1.removeElement(listaTitolari.getSelectedValue());        
    } 
    

    【讨论】:

    • 仍然重写插入的元素:(
    • @Franky 有没有例外?
    • @Franky 没有得到解决方案。我尝试了上面的代码,但我无法从 jlist 中删除一个项目。
    • 同上,你必须在方法外初始化defaultlistmodel
    【解决方案2】:

    清除 JLIST 的最佳和最简单的方法是:

    myJlist.setListData(new String[0]);
    

    【讨论】:

    • 这将替换 ListModel,这可能是不可取的。
    • @dmoloney 根据上面的评论,他们确实说“...清除 JLIST”。这个解决方案正是实现了这一点。
    猜你喜欢
    • 2014-07-09
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2012-03-13
    • 2014-03-19
    相关资源
    最近更新 更多