添加多个选择JList的值

时间:2014-04-28 02:16:57

标签: java user-interface jlist

我试图添加所选项目的价格,然后将其返回到主要课程,我将其添加到其他值。但是,当我运行该程序时,我得到的数字非常大。

到目前为止,我到了这里。

import java.util.Random;
import javax.swing.*;
import java.util.Arrays;
import java.text.DecimalFormat;
import javax.swing.event.*;
import java.awt.event.*;        
import java.awt.*;

    public class OtherPrdctPanel extends JPanel implements ListSelectionListener
    {
       private JPanel otherPrdctPanel;
       private JList otherPrdctList;
       public int selectedOtherService;

       private String[] miscellaneousProd = {"Grip tape: $10",
                                             "Bearings: $30", "Riser pads: $2",
                                             "Nuts & bolts kit: $3"};
       private int[] miscellaneousProdPri = {10, 30, 2, 3};


       public OtherPrdctPanel()
       {
          setBorder(BorderFactory.createTitledBorder("Other Products"));

          otherPrdctList = new JList(miscellaneousProd);
          add(otherPrdctList);

          otherPrdctList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
          otherPrdctList.addListSelectionListener(this);

          setLayout(new GridLayout(3, 1));

       }

       public void valueChanged (ListSelectionEvent e)
       {
          int selection;
          selectedOtherService = 0;
          selection = (int)otherPrdctList.getSelectedIndex();

          for(int i = 0; i < 4; i++)
          {
             selectedOtherService = selectedOtherService + miscellaneousProdPri[selection];
          }


       }
    }

请帮忙。

感谢。

2 个答案:

答案 0 :(得分:2)

由于您使用的选择模式为MULTIPLE_INTERVAL_SELECTION,因此您必须考虑所有选择。考虑使用这样的方法来计算总数。

public int calculateTotalPrice() {
    int[] selections = otherPrdctList.getSelectedIndices();
    int total = 0;
    for (int i : selections) {
        total += miscellaneousProdPri[i];
    }
    return total;
}

然后你可以按“计算”按钮调用它。此方法也不要求您实施ListSelectionListener,也可以删除valueChanged方法。

答案 1 :(得分:1)

ListSelectionListener会触发多个事件,因为您需要取消选择一行,然后选择另一行。因此,您可能不希望每次选择更改时计算总计。

相反,你可能需要一个&#34;计算总数&#34;按钮。然后,当单击该按钮时,使用JList API获取所有选定项目,然后计算总计。