Java 在两个JList之间移动所选数据
我正在尝试开发一个Java代码,该代码将在两个JList之间移动选定的数据, 由于getModel()方法不会返回DefaultListModel,并且也不允许显式强制转换List.getModel()方法,是否有其他可能的方法将所选数据从一个JList移动到另一个JList,反之亦然 以下是我正在尝试的内容的确切视图…(“全部添加”和“全部删除”按钮工作正常,我使用Arralist进行此操作,但我正在为所选数据找到解决方案,包括添加和删除数据的顺序) 代码: 对于左JList“ 对于右侧列表:Java 在两个JList之间移动所选数据,java,swing,jlist,Java,Swing,Jlist,我正在尝试开发一个Java代码,该代码将在两个JList之间移动选定的数据, 由于getModel()方法不会返回DefaultListModel,并且也不允许显式强制转换List.getModel()方法,是否有其他可能的方法将所选数据从一个JList移动到另一个JList,反之亦然 以下是我正在尝试的内容的确切视图…(“全部添加”和“全部删除”按钮工作正常,我使用Arralist进行此操作,但我正在为所选数据找到解决方案,包括添加和删除数据的顺序) 代码: 对于左JList“ 对于右侧列表
lmRight = new DefaultListModel();
lstRight = new javax.swing.JList();
lstRight.setModel(lmRight);
已解决:我将JList替换为JTable
注意:我们不能将DefaultListModel强制转换为getList(),因为它将返回AbstractListModel
谢谢大家的关注。您的解决方案应该非常简单,如:
List<Object> myItemsForRightList = new ArrayList<Object>();
int[] selectedIndexes = jListLeft.getSelectedIndicies();
for(int i=0; i < selectedIndexes.length; i++) {
Object whatever = jListLeft.getElementAt(selectedIndexes[i]);
((DefaultListModel)jListRight.getModel()).addElement(whatever);
}
List myItemsForRightList=new ArrayList();
int[]selectedIndex=jListLeft.getSelectedIndicies();
for(int i=0;i
我建议您也看看API提供了什么@
---编辑---只是因为没有提供完整的源代码,我在重新发布上面的代码时考虑到了JDK 7
public static void main(String ... args) {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultListModel<String> defaultListModel = new DefaultListModel<String>();
defaultListModel.addElement("Bla bla bla");
defaultListModel.addElement("Ble ble ble");
defaultListModel.addElement("Blo blo blo");
final JList<String> list = new JList<String>();
list.setPreferredSize(new Dimension(400, 200));
list.setModel(defaultListModel);
JButton button = new JButton("Add");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
((DefaultListModel<String>)list.getModel()).addElement("New one added");
}
});
frame.setLayout(new BorderLayout(5, 5));
frame.add(new JScrollPane(list), BorderLayout.NORTH);
frame.add(button, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
publicstaticvoidmain(字符串…参数){
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultListModel DefaultListModel=新的DefaultListModel();
defaultListModel.addElement(“Bla Bla Bla”);
defaultListModel.addElement(“Ble”);
defaultListModel.addElement(“Blo Blo Blo”);
最终JList列表=新JList();
list.setPreferredSize(新维度(400200));
list.setModel(defaultListModel);
JButton按钮=新JButton(“添加”);
addActionListener(新建ActionListener()){
@凌驾
已执行的公共无效操作(操作事件e){
((DefaultListModel)list.getModel()).addElement(“添加新的”);
}
});
frame.setLayout(新的BorderLayout(5,5));
frame.add(新的JScrollPane(列表),BorderLayout.NORTH);
框架。添加(按钮,边框布局。南);
frame.pack();
frame.setVisible(true);
}
您尝试了什么?您面临的问题是什么?为什么不尝试getModel()返回DefaultListModel,为什么不允许显式强制转换?这是因为您没有首先创建带有DefaultTableModel的JList。我不知道它与问题有什么关系。因为您似乎还没有准备好详细说明您的问题,我将投票关闭。不要添加图像。发布代码。cod有问题吗E你没有显示…考虑提供一个。这会使人们更容易地分析你的问题。Debug TistMod模型将抛出一个异常……我已经在我的问题中指定了。它不能因为Debug TListMype实现了ListMeod接口。测试并体验发生在你身上的事情。
public static void main(String ... args) {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultListModel<String> defaultListModel = new DefaultListModel<String>();
defaultListModel.addElement("Bla bla bla");
defaultListModel.addElement("Ble ble ble");
defaultListModel.addElement("Blo blo blo");
final JList<String> list = new JList<String>();
list.setPreferredSize(new Dimension(400, 200));
list.setModel(defaultListModel);
JButton button = new JButton("Add");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
((DefaultListModel<String>)list.getModel()).addElement("New one added");
}
});
frame.setLayout(new BorderLayout(5, 5));
frame.add(new JScrollPane(list), BorderLayout.NORTH);
frame.add(button, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}