Java 从一个jlist添加到另一个jlist

Java 从一个jlist添加到另一个jlist,java,eclipse,jlist,Java,Eclipse,Jlist,我一直在这里做研究,一直在寻找解决问题的方法。我是java新手,所以我不知道所有的语法。我正在尝试使用jlists之间的按钮获取代码,以便将项目从一个jlist传输到另一个jlist。左边的列表中有要开始的项目。假设代码使用add按钮将项目从左侧列表移动到右侧列表;还假设使用“删除”按钮将添加到右侧列表的所有项目移回左侧列表。我的代码将项目从左列表添加到右列表,但它不保存添加的项目。我尝试添加的下一项只是替换旧项。有人能帮我吗?下面是完整的代码 import java.awt.BorderLay

我一直在这里做研究,一直在寻找解决问题的方法。我是java新手,所以我不知道所有的语法。我正在尝试使用jlists之间的按钮获取代码,以便将项目从一个jlist传输到另一个jlist。左边的列表中有要开始的项目。假设代码使用add按钮将项目从左侧列表移动到右侧列表;还假设使用“删除”按钮将添加到右侧列表的所有项目移回左侧列表。我的代码将项目从左列表添加到右列表,但它不保存添加的项目。我尝试添加的下一项只是替换旧项。有人能帮我吗?下面是完整的代码

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;

public class Window {

    private JFrame frame;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Window window = new Window();
                    window.frame.setVisible(true);
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Window() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        initialize();
    }

    public void initialize() {
        //Creating the Panel for Menu Bar       
        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 434, 23);
        frame.getContentPane().add(panel);
        panel.setLayout(new BorderLayout(0, 0));
        //Creating the Menu File Bar
        JMenuBar bar = new JMenuBar();
        panel.add(bar, BorderLayout.NORTH);
        JMenu file = new JMenu("File");
        JMenuItem load = new JMenuItem("Load");
        JMenuItem save = new JMenuItem("Save");
        JMenuItem exit = new JMenuItem("Exit");
        file.add(load);
        file.add(save);
        file.add(exit);
        bar.add(file);

        //Populate Left List with part names    
        final DefaultListModel parts = new DefaultListModel();
        parts.addElement("Case");
        parts.addElement("Motherboard");
        parts.addElement("CPU");
        parts.addElement("GPU");
        parts.addElement("PSU");
        parts.addElement("RAM");
        parts.addElement("HDD");

        final JList leftList = new JList(parts);
        leftList.setBounds(10, 26, 142, 224);
        frame.getContentPane().add(leftList);

        //create right list 
        final DefaultListModel partSelected = new DefaultListModel();
        final JList rightList = new JList();
        rightList.setBounds(282, 26, 142, 224);
        frame.getContentPane().add(rightList);

        //add event to the button to move items from left list to right list
        JButton btnNewButton = new JButton(">>");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                rightList.setListData(leftList.getSelectedValues());
                for (Object selectedValue : leftList.getSelectedValuesList()) {
                    partSelected.addElement(selectedValue);
                    parts.removeElement(selectedValue);
                    int iSelected = leftList.getSelectedIndex();
                    if (iSelected == -1) {
                        return;
                    }
                }
            }
        });
        btnNewButton.setBounds(172, 86, 89, 23);
        frame.getContentPane().add(btnNewButton);

        //Remove Button     
        JButton remove = new JButton("<<");
        remove.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                rightList.setListData(leftList.getSelectedValues());
                for (Object selectedValue : rightList.getSelectedValuesList()) {
                    parts.addElement(selectedValue);
                    int selected = rightList.getSelectedIndex();
                    if (selected == -1) {
                        return;
                    }
                    partSelected.removeElement(selectedValue);
                }
            }
        });
        remove.setBounds(172, 140, 89, 23);
        frame.getContentPane().add(remove);
    }
}
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.DefaultListModel;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JList;
导入javax.swing.JMenu;
导入javax.swing.JMenuBar;
导入javax.swing.JMenuItem;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.ListSelectionModel;
公共类窗口{
私有JFrame;
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
窗口=新窗口();
window.frame.setVisible(true);
}
捕获(例外e){
e、 printStackTrace();
}
}
});
}
公共窗口(){
frame=新的JFrame();
机架立根(100450300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
初始化();
}
公共无效初始化(){
//为菜单栏创建面板
JPanel面板=新的JPanel();
面板.立根(0,0,434,23);
frame.getContentPane().add(面板);
panel.setLayout(新的BorderLayout(0,0));
//创建菜单文件栏
JMenuBar=新的JMenuBar();
面板。添加(条形,边框布局。北);
JMenu文件=新JMenu(“文件”);
JMenuItem load=新的JMenuItem(“load”);
JMenuItem保存=新的JMenuItem(“保存”);
JMenuItem退出=新的JMenuItem(“退出”);
文件。添加(加载);
文件。添加(保存);
文件。添加(退出);
添加(文件);
//用零件名称填充左侧列表
最终DefaultListModel部件=新DefaultListModel();
部分。附录(“案例”);
零件。附件(“主板”);
部分。附录(“CPU”);
部分附录(“GPU”);
部分附录(“PSU”);
部分附录(“RAM”);
部分附录(“HDD”);
最终JList leftList=新JList(零件);
leftList.setBounds(10,26,142,224);
frame.getContentPane().add(leftList);
//创建右列表
最终DefaultListModel partSelected=新DefaultListModel();
最终JList rightList=新JList();
右列表.立根(282,26,142,224);
frame.getContentPane().add(rightList);
//将事件添加到按钮以将项目从左列表移动到右列表
JButton btnNewButton=新JButton(“>>”);
addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0){
setListData(leftList.getSelectedValues());
对于(对象selectedValue:leftList.getSelectedValuesList()){
partSelected.addElement(selectedValue);
零件拆卸(选择的值);
int iSelected=leftList.getSelectedIndex();
如果(已选择==-1){
返回;
}
}
}
});
btnNewButton.收进边界(172,86,89,23);
frame.getContentPane().add(btnNewButton);
//移除按钮

JButton remove=newjbutton(“@Prob1em我已经更新了你的代码

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class Window {

    private final JFrame frame;

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            Window window = new Window();
            window.frame.setVisible(true);

        });
    }

    public Window() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        initialize();
    }

    public void initialize() {
        //Creating the Panel for Menu Bar       
        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 434, 23);
        frame.getContentPane().add(panel);
        panel.setLayout(new BorderLayout(0, 0));
        //Creating the Menu File Bar
        JMenuBar bar = new JMenuBar();
        panel.add(bar, BorderLayout.NORTH);
        JMenu file = new JMenu("File");
        JMenuItem load = new JMenuItem("Load");
        JMenuItem save = new JMenuItem("Save");
        JMenuItem exit = new JMenuItem("Exit");
        file.add(load);
        file.add(save);
        file.add(exit);
        bar.add(file);

        //Populate Left List with part names    
        final DefaultListModel parts = new DefaultListModel();
        parts.addElement("Case");
        parts.addElement("Motherboard");
        parts.addElement("CPU");
        parts.addElement("GPU");
        parts.addElement("PSU");
        parts.addElement("RAM");
        parts.addElement("HDD");

        final JList leftList = new JList(parts);
        leftList.setBounds(10, 26, 142, 224);
        frame.getContentPane().add(leftList);

        //create right list 
        final DefaultListModel partSelected = new DefaultListModel();
        final JList rightList = new JList(partSelected);
        rightList.setBounds(282, 26, 142, 224);
        frame.getContentPane().add(rightList);

        //add event to the button to move items from left list to right list
        JButton btnNewButton = new JButton(">>");
        btnNewButton.addActionListener((ActionEvent arg0) -> {
//            rightList.setListData((Vector) leftList.getSelectedValue());
            for (Object selectedValue : leftList.getSelectedValuesList()) {
                partSelected.addElement(selectedValue);
                parts.removeElement(selectedValue);
                int iSelected = leftList.getSelectedIndex();
                if (iSelected == -1) {
                    return;
                }
            }
        });
        btnNewButton.setBounds(172, 86, 89, 23);
        frame.getContentPane().add(btnNewButton);

        //Remove Button     
        JButton remove = new JButton("<<");
        remove.addActionListener((ActionEvent arg0) -> {
//            rightList.setListData(leftList.getSelectedValues());
            for (Object selectedValue : rightList.getSelectedValuesList()) {
                parts.addElement(selectedValue);
                partSelected.removeElement(selectedValue);
                int selected = rightList.getSelectedIndex();
                if (selected == -1) {
                    return;
                }
            }
        });
        remove.setBounds(172, 140, 89, 23);
        frame.getContentPane().add(remove);
    }
}
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入java.awt.event.ActionEvent;
导入javax.swing.DefaultListModel;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JList;
导入javax.swing.JMenu;
导入javax.swing.JMenuBar;
导入javax.swing.JMenuItem;
导入javax.swing.JPanel;
公共类窗口{
私有最终JFrame;
公共静态void main(字符串[]args){
EventQueue.invokeLater(()->{
窗口=新窗口();
window.frame.setVisible(true);
});
}
公共窗口(){
frame=新的JFrame();
机架立根(100450300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
初始化();
}
公共无效初始化(){
//为菜单栏创建面板
JPanel面板=新的JPanel();
面板.立根(0,0,434,23);
frame.getContentPane().add(面板);
panel.setLayout(新的BorderLayout(0,0));
//创建菜单文件栏
JMenuBar=新的JMenuBar();
面板。添加(条形,边框布局。北);
JMenu文件=新JMenu(“文件”);
JMenuItem load=新的JMenuItem(“load”);
JMenuItem保存=新的JMenuItem(“保存”);
JMenuItem退出=新的JMenuItem(“退出”);
文件。添加(加载);
文件。添加(保存);
文件。添加(退出);
添加(文件);
//用零件名称填充左侧列表
最终DefaultListModel部件=新DefaultListModel();
部分。附录(“案例”);
零件。附件(“主板”);
部分。附录(“CPU”);
部分附录(“GPU”);
部分附录(“PSU”);
部分附录(“RAM”);
部分附录(“HDD”);
最终左列表=