2016-10-28 3 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

может быть Listener установлен к объектам 'dml', который вызывается в' dlm.addElement() ' –

+0

Или используйте класс (например,« Продукт »или« Элемент ») для хранения описания и цены и реализации' toString' и 'equals' соответственно. Дополнительные кредиты таким образом :) –

ответ

0

Я решил проблему, создав отдельный DefaultListModel, который содержит только выбранный элемент. Это используется в утверждении IF.

Вот рабочий код:

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; 
} 
Смежные вопросы