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