少し問題があります。これが状況です。特定のボタンがクリックされるとインクリメントされるメイン クラスに金額フィールドがあります。注文を削除できる方法が提供されており(私は基本的にレストラン端末用にプログラミングしています)、金額が減ります。delete メソッドは別のクラスに配置されます。
public void posdel(int pos, JTextField amountFieldGot, int amountGot)
{
if(slist==null)
{
JOptionPane.showMessageDialog(null, "No order has been placed yet.",null,JOptionPane.WARNING_MESSAGE);
}
else
{
if(pos==1)
{
reductionAmount = (slist.quantity*slist.price);
amountGot = amountGot - reductionAmount;
slist=slist.next;
}
else
{
int i=1;
Node temp=slist;
Node prev=null;
while(temp.next!=null && i<pos)
{
prev=temp;
temp=temp.next;
i++;
}
if(pos==i)
{
prev.next=temp.next;
}
else
{
JOptionPane.showMessageDialog(null, "Invalid order", null, JOptionPane.ERROR_MESSAGE);
}
}
}
amountFieldGot.setText(Integer.toString(amountGot));
}
つまり、基本的に、GUI に amountField があり、それをパラメーターとして posdel メソッドに渡します。また、金額の値をパラメーターとして渡します。私が得る新しい金額は、最初の注文を削除した後の amountGot です。(他のポジションのコードは書いていません。) メソッドに渡す金額の値が 30 (14+16) 14 = 注文 1、16 = 注文 2 であるとします。最初の注文の値は 14 です。つまり、amountGot = 30 - 14、つまり 16 です。GUI の amountField は 16 に更新されます。注文 2 が注文 1 になります。これを削除しようとすると、amountField 14 に更新されます (30-16 = 14)。したがって、金額の値は 30 のままで、新しい amountGot の値に更新されないと推測しています。誰かがこの問題を解決するのを手伝ってくれますか?
以下は私の削除ボタンのコードです。
deleteButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dishDelPos = JOptionPane.showInputDialog("Enter the position of the order to be deleted");
try
{
dishDeletePosition = Integer.parseInt(dishDelPos);
order1.posdel(dishDeletePosition, amountField, amount);
repaint();
}
catch(NumberFormatException ex1)
{
JOptionPane.showMessageDialog(null,"This is not a valid position");
}
}
});