2016-04-11 13 views
0

TotalOrderedLabel cihazımı güncellemeye çalışıyorum, böylece orderList öğesinden bir öğeyi kaldırdığımda, totalOrderedLabel içindeki toplamFiyatı güncellenecektir.Toplam sipariş listesini güncellemeye çalışıyorum

Kaldır Düğme

JButton removeButton = new JButton("remove"); 
    removeButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
       int selectionNumber = orderList.getSelectedIndex(); 
       if (selectionNumber == -1) { 
        JOptionPane.showMessageDialog(MenuPage.this, "Remove Item"); 
       } else { 
        listOrder.removeElementAt(selectionNumber); 

        double totalPrice = 0.0; 
        for(Food food : OrderedFoodList) { 
         totalPrice = totalPrice + food.getPrice(); 
        } 

        totalOrderedLabel.setText("Total price: " + totalPrice); 
        OrderedFoodList.clear(); 
       } 
     } 

    }); 
    removeButton.setBounds(680, 189, 117, 29); 
    contentPane.add(removeButton); 

orderList/yöntem toplam tutarı kadar ekleyin.

menulist listOrder = new menulist(); 
    orderList = new JList(listOrder); 

JButton orderBtn = new JButton(); 
    orderBtn.setText("Place Order"); 
    orderBtn.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent e) { 
      int selectionNumber = mealList.getSelectedIndex(); 
      if (selectionNumber == -1){ 
       JOptionPane.showMessageDialog(MenuPage.this, "Please select a meal"); 
      } else { 
       Food orderedMeal = (Food) mealList.getSelectedValue(); 

       JOptionPane.showMessageDialog(MenuPage.this, "You have ordered "  //clear the last order . find a code to do that 
         + orderedMeal + ""); 

       listOrder.addElement(orderedMeal); 

       double totalPrice = 0.0; 
       for(Food food : OrderedFoodList) { 
        totalPrice = totalPrice + food.getPrice(); 
       } 
       totalOrderedLabel.setText("Total price: " + totalPrice); 

       } 
     } 

    }); 
    orderBtn.setBounds(259, 189, 117, 29); 
    contentPane.add(orderBtn); 

totalOrdered Etiket

totalOrderedLabel = new JLabel("Total Price"); 
    totalOrderedLabel.setBounds(697, 111, 142, 16); 
    contentPane.add(totalOrderedLabel); 

    totalCaloriesLabel = new JLabel("Total Calories"); 
    totalCaloriesLabel.setBounds(388, 205, 253, 16); 
    contentPane.add(totalCaloriesLabel); 
    } 

public void updateLabel(menulist model) { 

int selectionNumber = mealList.getSelectedIndex(); 
if (selectionNumber == -1){ 
    //JOptionPane.showMessageDialog(MenuPage.this, "Please select a meal"); 
} else { 
    Food menulist = (Food) mealList.getSelectedValue(); 
Food itemFood = (Food) ((menulist) model).getElementAt(selectionNumber); 

//Add new food to current order 
OrderedFoodList.add(itemFood); 
+1

IMO'yu yapmanın en iyi yolu, OrderedFoodList 'Observable' yapmak ve sonra 'Gözlemcinin' üzerine bağlı olan tüm grafik alanlarını eklemek olacaktır. Güncelleştirme hakkında, SwingUtilities.invokeLater (Runnable) – ControlAltDel

+0

@LydiaRichardson kullanmayı unutmayın ve tam olarak sorun nedir? Bir JLabel'in metnini nasıl kuracağınızı biliyor musunuz? JList boyunca nasıl yineleyip, tüm değerleri nasıl toplayacağınızı biliyor musunuz? Tüm bu mantığı "Yer Siparişi" düğmenizde yapıyorsunuz. Peki "Kaldır" düğmesi hakkında farklı olan nedir? – camickr

+0

Siz ve kardeşiniz sorunu çözmek için neden birlikte çalışmıyorsunuz? Http://stackoverflow.com/questions/36509153/trying-to-create-a-remove-button-which-removes-items-from-a- list/36509400 # 36509400 Ve senin yardımını alırken kardeşinin cevapları kabul etmeye başladığını hatırlatıyor. – camickr

cevap

0

ben totalOrderedLabel içinde totalPrice

güncellenecektir orderList bir öğeyi kaldırmak ne zaman ki benim totalOrderedLabel güncellemeye çalışıyorum Ve Listeye yeni bir öğe eklediğinizde ne olacak? Her iki durumda da kavram, listedeki tüm öğeler arasında yinelediğinizde aynıdır ve ardından etiketi güncelleyin.

Listedeki öğeler değiştiğinde bildirim almanız gerekiyor. ListModel'a ListDataListener ekleyin. Daha sonra etkinlik oluşturulduğunda, listedeki tüm kalan öğeler arasında yineleyin ve toplamı yeniden hesaplayın ve ardından JLabel'i güncelleyin. Çalışma örneği ve daha fazla bilgi için, How to Write a ListDataListener numaralı Swing öğreticisinden bölümü okuyun.

İlgili konular