Java 从双jlist之一删除元素

Java 从双jlist之一删除元素,java,swing,Java,Swing,要从第二个列表中删除项目,是否可以不使用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;

要从第二个列表中删除项目,是否可以不使用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);

    }

}
从JList中创建、添加和删除元素
JList
s可以使用构造函数用一组字符串初始化

public JList(Object[] listData)
例如,可以提供字符串数组:

String[] ar = {"one", "two", "three"};
JList list = new JList(ar);
但是,在初始化后,没有添加或删除项目的方法。相反,如果需要执行此操作,则必须使用带有JList的类。将ListModel视为保存JList中项目的对象

  • 声明以下内容的实例:

  • 创建它:

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

  • 在JList的构造函数中使用DefaultListModel(而不是字符串数组):

  • 现在,要在执行过程中随时添加其他元素,请再次使用addElement(),它将显示在JList中。(也可以使用“添加”(int-index),其中指定要添加的元素的基于0的位置。)

  • 要删除项目,只需调用下面的方法,其中n是要删除的项目的基于0的索引。它将消失

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

     listModel.clear();
    

  • 有几点:

    • 是不推荐使用的方法,因此不要使用它

    • 不要简单地抑制警告

    • 即使不指定默认使用的


    顺便说一句,我需要一份没有ListModel的确认书,所以你确认了,所以我必须使用l.m.buddy。我的问题是,我使用了两个列表,一个用于所有数据,另一个用于所选/所需数据。然后在插入到l.m的对象中之后,我必须执行以下操作:list1=newjlist(listmodel);请看我文章的最后一点。因此,请使用为这些类型的操作提供方便方法的
    ListModel
    。阅读更多关于感谢的信息,但为什么会有反对票/不知道是谁投了反对票,没有任何评论。也许你的问题不清楚。只需再次更新您的问题,以描述您在程序中遇到的问题。无论何时你发布你的代码,你都需要用文字来描述它。谢谢,从现在开始,我将尝试详细阐述我的问题@Braj有你的联系方式吗。。。?(电邮/fb)
    JList list = new JList(listModel);
    
    listModel.addElement(“new item”);
    
     listModel.remove(n);
    
     listModel.clear();