2016-10-28 6 views
0

JList/DefaultListModel에 항목이 있는지 확인해야합니다. 내가 검사하는 항목은 "$"기호 다음에 변경되는 문자열입니다.JList에 접미사가 변경된 객체가 포함되어 있는지 확인

다음은 내가 작업중인 코드의 의사 버전입니다.

String theItem = "Bananas"; 
BigDecimal theQuantity = new BigDecimal(quantity.getText()); 
BigDecimal thePrice = new BigDecimal(0.00); //This changes depending on quanitity 
thePrice = thePrice.setScale(2, BigDecimal.ROUND_HALF_UP); 

if (!dlm.contains(whatGoesHere)) { 
    dlm.addElement(theItem + " $" + thePrice.toString()); 
    jList.setModel(dlm); 
    //More code 
} else { 
    JOptionPane.showMessageDialog(mainPanel, "You already selected that item", "Error Dialog", JOptionPane.ERROR_MESSAGE); 
    return; 
} 
+0

당신이 정규 표현식과 패턴 매칭에 봤어 : 여기

는 작업 코드? –

+0

'dlm.addElement()'내에서 호출되는'dml' 객체에 설정된 Listener가있을 수 있습니다. –

+0

또는 클래스 (예 :'Product' 또는'Item')를 사용하여 설명과 가격을 보유하고' toString'과'equals'를 적절하게 사용합니다. 그 방법으로 여분의 크레디트 :) –

답변

0

선택한 항목 만 포함 된 별도의 DefaultListModel을 만들어 문제를 해결했습니다. 유효성 확인서에 사용됩니다.

DefaultListModel validatorDLM = new DefaultListModel(); //Specifically for validation 
DefaultListModel orderDLM = new DefaultListModel(); 
String theItem = "Bananas"; //This changes with combo box 
BigDecimal theQuantity = new BigDecimal(quantity.getText()); 
BigDecimal thePrice = new BigDecimal(0.00); //This changes depending on quanitity 
thePrice = thePrice.setScale(2, BigDecimal.ROUND_HALF_UP); 

if (!validatorDLM.contains(theItem)) { 
    validatorDLM.addElement(theItem); 
    orderDLM.addElement(theItem + " $" + thePrice.toString()); 
    jList.setModel(orderDLM); 
    //More code 
} else { 
    JOptionPane.showMessageDialog(mainPanel, "You already selected that item", "Error Dialog", JOptionPane.ERROR_MESSAGE); 
    return; 
}