【问题标题】:deleing element from one of dual jlist从对偶 jlist 之一中删除元素
【发布时间】:2014-06-08 11:08:26
【问题描述】:

想要从第二个列表中删除项目,没有 ListModel 的任何方式..?

import java.awt.FlowLayout;
import java.awt.event.*;

import javax.swing.*;

@SuppressWarnings({ "serial", "rawtypes", "deprecation", "unchecked" })
public class Class_GUI_Test_1 extends JFrame {

    JList list1, list2;
    JButton add, remove, add_all;

    private String[] names = { "hTC Explorer", "S_G_Nexus_s", "hTC Amaze", "LG OPTIMUS G" };

    public Class_GUI_Test_1() {
        super("TEST");
        setLayout(new FlowLayout()); // BoxLayout(getContentPane(),
                                     // BoxLayout.PAGE_AXIS));

        list1 = new JList(names);
        list1.setVisibleRowCount(3);
        list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        add(new JScrollPane(list1));

        add = new JButton("Add");
        add.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                list2.setListData(list1.getSelectedValues());
            }
        });

        add(add);

        list2 = new JList();
        list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        list2.setFixedCellHeight(25);
        list2.setVisibleRowCount(3);
        list2.setFixedCellWidth(150);
        add(new JScrollPane(list2));

        add_all = new JButton("ADD All DATA");
        add_all.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent event) {

                list2.setListData(names);

            }
        });

        add(add_all);

        remove = new JButton("Remove_Data");
        remove.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {

                list2.add(list1); // this is where i need help.
                int index = list2.getSelectedIndex();
                if (index >= 0)
                    list2.remove(index);

            }
        });

        add(remove);

    }

    public static void main(String[] args) {
        Class_GUI_Test_1 gui = new Class_GUI_Test_1();
        gui.setVisible(true);
        gui.setSize(250, 350);
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

}

【问题讨论】:

    标签: java swing


    【解决方案1】:

    在 JList 中创建、添加和删除元素

    JLists 可以使用构造函数用一组字符串初始化

    public JList(Object[] listData)
    

    例如,您可以提供一个字符串数组:

    String[] ar = {"one", "two", "three"};
    JList list = new JList(ar);
    

    但是,JList 在初始化后无法添加或删除项目。相反,如果您需要这样做,则必须使用带有 JList 的 ListModel 类。将 ListModel 视为保存 JList 中项目的对象。

    1. 声明DefaultListModel的实例:

      DefaultListModel listModel;
      
    2. 创建它:

      listModel = new DefaultListModel();
      
    3. 填充它(现在或以后):

      listModel.addElement(“item 1”);
      listModel.addElement(“item 2”);
      
    4. 在 JList 的构造函数中使用 DefaultListModel(而不是字符串数组):

      JList list = new JList(listModel);
      
    5. 现在要在执行期间随时添加其他元素,再次使用 addElement(),它将显示在 JList 中。 (您也可以使用 add(int index) 来指定要添加的元素的从 0 开始的位置。)

      listModel.addElement(“new item”);
      
    6. 要删除一个项目,只需调用下面的方法,其中 n 是要删除的项目的从 0 开始的索引。它会消失。

       listModel.remove(n);
      
    7. 要删除所有项目,请调用

       listModel.clear();
      

    几点:

    【讨论】:

    • seasite.niu.edu/cs580java/JList_Basics.htm 顺便说一句,我需要确认没有 ListModel 这样做,所以你确认了它,所以我必须使用 l.m。伙计,我的问题是我使用两个列表,一个用于所有数据,另一个用于选定/所需数据。然后插入到 l.m 的对象后,我必须这样做 list1 = new JList(listmodel);
    • 看我帖子的最后一点。所以使用ListModel,它为这些类型的操作提供了方便的方法。阅读更多关于Removing items from JList
    • 谢谢,但是为什么对线程投了反对票...? ://
    • 不知道是谁投了反对票,没有任何评论。可能是你的问题不清楚。只需再次更新您的问题以描述您在程序中遇到的问题。每当您发布代码时,您也需要用文字来描述它。
    • 谢谢,从现在开始会尝试详细说明我的问题。 @Braj 请提供您的任何联系链接...? (电子邮件/脸书)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多