2014-04-28 2 views
0

선택한 항목의 가격을 추가 한 다음 주 클래스로 반환하여 다른 값에 추가하려고합니다. 그러나, 내가 프로그램을 실행할 때 나는 가지고있는 것에 비해 매우 큰 숫자를 얻었습니다.다중 선택 값 추가 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

MULTIPLE_INTERVAL_SELECTION의 선택 모드를 사용하고 있으므로 모든 선택 사항을 고려해야합니다. 합계를 계산하려면 이와 같은 방법을 사용하십시오.

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

그러면 "계산"버튼을 눌러 이것을 호출 할 수 있습니다. 이 방법을 사용하면 ListSelectionListener을 구현할 필요가 없으며 valueChanged 메서드를 제거 할 수 있습니다.

+0

감사합니다. 정말 고맙습니다. – user3080461

+0

기꺼이 도와 드리겠습니다. –

+0

@ user3080461, 그것은 내가 한 시간 전에 제안한 것입니다. 나는 당신이 API를 읽지 않았다고 생각합니다. – camickr

1

ListSelectionListener는 한 행을 선택 취소 한 다음 다른 행을 선택해야하기 때문에 여러 이벤트를 발생시킵니다. 따라서 선택이 변경 될 때마다 총계를 계산하지 않으려 고합니다.

대신 "계산 총계"버튼이 필요합니다. 그런 다음 해당 버튼을 클릭하면 JList API를 사용하여 선택한 항목을 모두 가져온 다음 합계를 계산합니다.

+0

답해 주셔서 감사합니다. 그러나, 나는 하나의 선택 다른 JList에서 모든 값을 추가합니다 계산 단추가 있습니다. 내 문제는 그냥 Ctrl 키를 사용하여 여러 행을 선택하여 여러 값을 추가하려면 노력하고있어이 클래스에서 그냥 있습니다. – user3080461