Java 如何使用添加/删除按钮在两个jlists之间移动项目

Java 如何使用添加/删除按钮在两个jlists之间移动项目,java,jbutton,jlist,Java,Jbutton,Jlist,我的任务是创建一个具有两个JLists(左和右)的GUI,并能够使用添加和删除按钮在两个列表之间移动项目 一旦添加到右侧列表中,该项将不再显示在左侧列表中。如何使这些按钮执行正确的操作 请参阅下面我的代码: JList<String> leftList = new JList<String>(); leftList.setModel(new AbstractListModel<String>() {

我的任务是创建一个具有两个
JLists
(左和右)的GUI,并能够使用添加和删除按钮在两个列表之间移动项目

一旦添加到右侧列表中,该项将不再显示在左侧列表中。如何使这些按钮执行正确的操作

请参阅下面我的代码:

            JList<String> leftList = new JList<String>();
            leftList.setModel(new AbstractListModel<String>() {
                String[] values = new String[] {"Car", "Truck", "Boat", "Plane"};
                public int getSize() {
                    return values.length;
                }
                public String getElementAt(int index) {
                    return values[index];
                }
            });
            leftList.setBounds(0, 0, 196, 539);
            frame.getContentPane().add(leftList);

            JList<String>rightList = new JList<String>();
            rightList.setBounds(285, 0, 196, 539);
            frame.getContentPane().add(rightList);


    //this will create the add and remove buttons
            JButton btnAddButton = new JButton(">>");
            btnAddButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {

                }
            });
            btnAddButton.setBounds(218, 247, 49, 34);
            frame.getContentPane().add(btnAddButton);





            JButton btnRemoveButton = new JButton("<<");
            btnRemoveButton.setBounds(218, 292, 49, 34);
            frame.getContentPane().add(btnRemoveButton);


}
JList leftList=new JList();
setModel(新的AbstractListModel(){
字符串[]值=新字符串[]{“汽车”、“卡车”、“船”、“飞机”};
公共int getSize(){
返回值.length;
}
公共字符串getElementAt(int索引){
返回值[索引];
}
});
leftList.setBounds(0,0196539);
frame.getContentPane().add(leftList);
JListrightList=新JList();
右列表.立根(285,0196539);
frame.getContentPane().add(rightList);
//这将创建添加和删除按钮
JButton btnAddButton=新JButton(“>>”);
addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件){
}
});
btnAddButton.setBounds(218247 49 34);
frame.getContentPane().add(btnAddButton);
JButton btnRemoveButton=新JButton(“签出列表演示

准则:

您不应该使用局部变量,因为一旦方法结束,它们都将消失,而让它们返回的唯一方法是通过

((JComponent)frame.getContentPane().getComponent(n)).getComponent(n) 
我指的是您的“GUI”和

您根本不应该使用“String[]values”,因为数组的大小是固定的,所以您不能修改它,请使用ArrayList

在这种特殊情况下,您根本不应该使用数组或列表,请继续阅读

在开发GUI时,您不应该过于精确,因为图形优化机制最终会使其崩溃,因此您应该尝试使用“DefaultListModel”,而不是使用“AbstractListModel”

(老实说,我试着用“AbstractListModel”来做你的例子,在“leftListModel”中,getElementAt()方法只被调用了一次,并且每隔一次重新验证()和重新绘制()都不会给出任何结果)


由于我们现在使用的是DefaultListModel,因此不需要任何数组,而是“addElement()”

考虑分别询问定位问题和行动响应问题,并对您的研究进行一点概述。
String[] values;