JList列表框实现左右两侧列表框的添加和删除

package com.office.ui;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

/**
 * Copyright(C),2020-2021,回梦工作室
 * FileName:JlistDemo.java
 * Author:  yanweihe
 * Date:    2021/9/21 0:04
 * Description:Jlist列表框
 * History:
 * <author>     <time>      <version>       <desc>
 * 作者姓名       修改时间      版本号           描述
 */
public class JlistDemo {
    private JFrame jFrame;
    private JPanel p;
    private JList listLeft,listRight;
    private JButton btnOK,btnCancel;
    DefaultListModel model1;
    DefaultListModel model2;

    public JlistDemo(){
        jFrame = new JFrame("JList列表");
        jFrame.setLayout(new GridLayout(1,3));
        p = new JPanel(new GridLayout(2,1));
        String[] slist = new String[]{"看书","写字","画画","爬山","跑步","游泳"};
        listLeft = new JList();
        //listLeft.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置为单选
        listLeft.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);//设置为多选
        listLeft.setVisible(true);
        listRight = new JList();
        model1 = new DefaultListModel();
        model2 = new DefaultListModel();

        listLeft.setModel(model1);
        listRight.setModel(model2);

        btnOK = new JButton("——>");
        btnCancel = new JButton("<——");

        for(String s:slist){
            model1.addElement(s);
        }


        btnOK.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                List<String> strSelect = listLeft.getSelectedValuesList();
                int[] index = listLeft.getSelectedIndices();
                for (int i = index.length-1;i>=0;i--){
                    System.out.println(index[i]);
                    model1.remove(index[i]);
                }
                for (String s:strSelect){
                    model2.addElement(s);

                }

            }
        });

        btnCancel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                List<String> strSelect = listRight.getSelectedValuesList();
                int[] index = listRight.getSelectedIndices();
                for (int i = index.length-1;i>=0;i--){
                    System.out.println(index[i]);
                    model2.remove(index[i]);
                }
                for (String s:strSelect){
                    model1.addElement(s);

                }

            }
        });

        p.add(btnOK);
        p.add(btnCancel);
        jFrame.add(listLeft);
        jFrame.add(p);
        jFrame.add(listRight);

        jFrame.setSize(300,200);

        jFrame.setLocationRelativeTo(null);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setVisible(true);
    }

    public static void main(String[] args) {
        new JlistDemo();
    }
}

效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要创建一个 `JList` 组件来显示集合中的元素。然后,你可以通过使用 `JRadioButton` 和 `JButton` 组件来添加单选按钮和编辑按钮。 下面是一个简单的示例代码: ```java import javax.swing.*; import java.awt.*; import java.util.ArrayList; public class ListExample extends JFrame { private JList<String> list; private DefaultListModel<String> listModel; public ListExample() { setTitle("List Example"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); listModel = new DefaultListModel<>(); list = new JList<>(listModel); JScrollPane scrollPane = new JScrollPane(list); scrollPane.setPreferredSize(new Dimension(200, 200)); JPanel buttonPanel = new JPanel(new GridLayout(0, 1)); JRadioButton radioButton = new JRadioButton("Select Item"); JRadioButton editButton = new JRadioButton("Edit Item"); JButton addButton = new JButton("Add Item"); ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(radioButton); buttonGroup.add(editButton); buttonPanel.add(radioButton); buttonPanel.add(editButton); buttonPanel.add(addButton); addButton.addActionListener(e -> { String input = JOptionPane.showInputDialog("Enter a new item:"); if (input != null && !input.isEmpty()) { listModel.addElement(input); } }); Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(scrollPane, BorderLayout.CENTER); contentPane.add(buttonPanel, BorderLayout.EAST); pack(); setLocationRelativeTo(null); } public static void main(String[] args) { ArrayList<String> items = new ArrayList<>(); items.add("Item 1"); items.add("Item 2"); items.add("Item 3"); ListExample example = new ListExample(); for (String item : items) { example.listModel.addElement(item); } example.setVisible(true); } } ``` 在这个示例中,我们创建了一个 `JList` 组件,使用 `DefaultListModel` 作为数据模型。我们还创建了一个包含单选按钮和编辑按钮的 `JPanel`。 当用户点击“添加按钮”时,我们使用 `JOptionPane.showInputDialog` 显示一个对话框,让用户输入一个新的项目。如果用户输入了一个非空的字符串,我们将其添加列表中。 最后,我们将 `JList` 组件和按钮面板添加到 `JFrame` 的内容面板中,并使用 `pack` 方法调整窗口的大小。运行程序后,你应该能够看到一个带有单选按钮和编辑按钮的列表框

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值