我试图添加所选项目的价格,然后将其返回到主要课程,我将其添加到其他值。但是,当我运行该程序时,我得到的数字非常大。
到目前为止,我到了这里。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];
}
}
}
请帮忙。
感谢。
答案 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获取所有选定项目,然后计算总计。