Java 从多间隔JList中提取和操作数据以在textArea/JOptionPane中使用
正如标题所说,我有一个多区间选择列表,我在正确操作数据时遇到了问题。这是我第一次使用JList,这对我来说很困难 我的GUI充当运动队的门票订购界面,我所指的JList包含客户可以订购的纪念品列表。由于这是一个多选列表,他们可以选择多个纪念品,如果他们这样选择 我的问题是从JList中提取项目,并将其正确打印到JOptionPane textArea窗口,该窗口用作用户订单的摘要。以下是我的目标/问题的分类: 提取选定的纪念品,其中纪念品的名称存储在字符串[]数组中 匹配并行价格数组,存储在双[]数组中 使用JList事件处理程序中的适当方法,然后将数据打印到textArea摘要 消除在我尝试将数据打印到文本区域时出现的重复纪念品 以下是我的JList的创建:Java 从多间隔JList中提取和操作数据以在textArea/JOptionPane中使用,java,arrays,jlist,Java,Arrays,Jlist,正如标题所说,我有一个多区间选择列表,我在正确操作数据时遇到了问题。这是我第一次使用JList,这对我来说很困难 我的GUI充当运动队的门票订购界面,我所指的JList包含客户可以订购的纪念品列表。由于这是一个多选列表,他们可以选择多个纪念品,如果他们这样选择 我的问题是从JList中提取项目,并将其正确打印到JOptionPane textArea窗口,该窗口用作用户订单的摘要。以下是我的目标/问题的分类: 提取选定的纪念品,其中纪念品的名称存储在字符串[]数组中 匹配并行价格数组,存储在双[
souvenirList = new JList(itemNames); //itemNames is an array of Strings[] for souvenirs
souvenirList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
souvenirList.setLayoutOrientation(JList.VERTICAL);
scrollPane = new JScrollPane(souvenirList);
scrollPane.setPreferredSize(new Dimension(200,100));
gbc3.gridx = 1;
gbc3.gridy = 1;
centerPanel.add(scrollPane, gbc3);
c.add(centerPanel, BorderLayout.CENTER);
以下是我的JList事件处理程序:
private class ListHandler implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent le)
{
boolean adjust = souvenirList.getValueIsAdjusting();
if (!adjust)
{
//not sure if/how I should use this
souvIndex = souvenirList.getSelectedIndices();
//I know this is depreciated, I dont know another way
souvItems = souvenirList.getSelectedValues();
for (int i = 0; i < souvItems.length; i++)
{
System.out.println(souvItems[i] + "\n");
//my attempt to save the souvenirs to an accumlator, doesnt work right
souvString += souvItems[i];
}
}
}
}//end List handler
当它打印纪念品时,奇怪的事情发生了。我得到的是空的和重复的纪念品。我也不知道如何使用与打印的纪念品一起提供的平行排列的价格。并行阵列如下所示:
private double[] prices = {2.0, 10.0, 15.0, 25.0, 3.0, 5.0, 9.0, 8.0, 12.0, 6.0};
每个价格与此阵列对应的纪念品匹配:
private String[] itemNames = {"mug","cap","tee shirt","sweat shirt","pennant","mini stick",
"bobblehead","paper bag","foam paw","thunderstix"};
我已经花了大约6个小时来处理这个问题,但无法让它工作,部分原因是我不太理解JLists,部分原因是我觉得我的逻辑有缺陷。我尝试过几种不同的方法,但都不管用。如果有人对我如何以不同的方式处理问题提出了一些建议,甚至对如何正确操作JList提出了一些建议/澄清,我会非常感激。我真的很想明白这一点!再次感谢stack用户:我将创建一个新的类纪念品,您可以在其中保存带有主题和价格的纪念品,而不是使用两个数组
class Souvenir{
String subject;
double price;
}
关于JList,我也不太了解,但我认为有一种方法可以从JList对象中获得一个普通列表,使用此列表,您可以使用索引并将其放入纪念品或类似物品的数组列表中
这只是一个想法,我真的不能给你一个例子,所以如果其他人可以验证这一点,我也会感兴趣:谢谢你的建议!我确实想到了创建一个新类。也许我会玩一下,看看:
class Souvenir{
String subject;
double price;
}