1

わかりましたので、配列からオブジェクトを削除しようとしています。各オブジェクトにはユーザー ID があるため、配列の 0 インデックスは ID が 1 のオブジェクトを保持します。たとえば、IDが2のオブジェクトを削除すると、配列の1つのインデックスを削除し、モデルをやり直して表示したいとします。モデルに 1:blah を表示させ、次に 3:Blah を表示させ、削除されたものを除外します。

 private void DeleteButtonActionPerformed(java.awt.event.ActionEvent evt) {

// arrays index not working when deleted
int reply = JOptionPane.showConfirmDialog(null, "Are you sure?","Delete Patient: " +     
NameTextField.getText(), JOptionPane.YES_NO_OPTION);
    if (reply == JOptionPane.YES_OPTION) {

        int Num = Integer.parseInt(IDTextField.getText());
        int Num1 = Num--;


        for(Patient s: PatientList)
        {

            if(Num == s.getAccountNumber())
            {
                PatientList.remove(Num1);
                break;

            }
        }

        DefaultListModel PatientListModel = new DefaultListModel(); 

    for(Patient s: PatientList)
    {

   PatientListModel.addElement(s.getAccountNumber() + "-" + s.getName());  
 }
   PatientJList.setModel(PatientListModel); 

   //delete procedures for that id



      JOptionPane.showMessageDialog(null, "Patient: " + NameTextField.getText() + "     

 Deleted!");
      NameTextField.setText("");
    AgeTextField.setText("");
    AddressTextField.setText("");
    SexGroup.clearSelection();
    PhoneTextField.setText("");
    IDTextField.setText("");
     PatientJList.clearSelection();


    }
    else {


    }
}
4

2 に答える 2

2

配列インデックスをオブジェクトとして使用する代わりにid、オブジェクト自体でこのプロパティを維持する必要があると思います。何かのようなもの:

public class Patient {

    private int id;

    // getter and setter for id

    // rest of the class

}
于 2013-03-03T17:40:37.233 に答える
0

Objectあなたが話しているのは、 と呼ばれるもう1つのプロパティを維持することindexです。このオブジェクトを配列に追加するときに、 を配列Object.indexのインデックスに設定します。

ここで、配列に対して必要なことを何でも行います。ただし、配列の表示時。このようにしてください

Object.index Object

于 2013-03-03T17:43:09.143 に答える