0

患者がすでにクリックしたものに固有の JList 内の項目を選択したいと考えています。3 番目の患者をクリックすると、JList は患者が選択した項目を選択します。

PatientConList には、その患者の状態オブジェクトがあります。

患者を追加するときは、次のようにします。

List PatientConditions1 = new ArrayList();
PatientConditions1 =  ConditionsJList.getSelectedValuesList();

次に、患者をクリックすると、これが行われます

public void MakePatientJListSelected(ArrayList PatientConList) {
    //this makes selected, so get condition array off patient.
    //so call this from patient jlist listener
    ConditionsJList.clearSelection();
    //get number - 1, so then 0 = first
    ArrayList<Conditions> PassedIn = PatientConList;
    ArrayList SelectList = new ArrayList();

    for(Conditions p: PassedIn)
    {
       int Num = p.getNumber();
       Num = Num - 1;
       SelectList.add(Num);
    }    

    //int startSel = 0;
    //int endSel = 0;
    //ConditionsJList.setSelectionInterval(startSel, endSel);

    for(int k=0;k<PassedIn.size();k++)
    {
        int startSel2 = k;
        int endSel2 = k;
        ConditionsJList.addSelectionInterval(startSel2, endSel2);
    }    
}

申し訳ありませんが、基本的には JList があり、必要な条件を選択して [追加] をクリックできます。これにより、条件のリストが患者に追加されます。

基本的には、表示する患者を選択すると、その患者の jlist 条件が jlist で選択されるようにしたいと考えています。

スレッド「AWT-EventQueue-0」でこのエラー例外が発生します java.lang.ClassCastException: java.lang.String cannot be cast to DentistAppNew.Conditions

私の患者クラス:

import java.util.*;

public class Patient {

private int AccountNumber;
private String Name;
private int Age;
private String Address;
private String  Sex;
private String Phone;
private List<Conditions> ConditionNames;

public Patient( int AccountNumber1,
                String Name1, 
                int Age1, 
                String Address1, 
                String Sex1, 
                String Phone1, 
                List<Conditions> ConditionNames1)
{                
    this.AccountNumber = AccountNumber1;
    this.Name = Name1;
    this.Age = Age1;
    this.Address = Address1;
    this.Sex = Sex1;
    this.Phone = Phone1;
    this.ConditionNames = ConditionNames1
}

public  int getAccountNumber() { return AccountNumber; }

public  String getName() { return Name; }

public int getAge() { return Age; }

public String getAddress() { return Address; }

public String getSex() { return Sex; }

public String getPhone() { return Phone; }

public List getConditionsList() { return ConditionNames; }

public  void setName(String Name1) { this.Name = Name1; }

public void setAge(int Age1) { this.Age = Age1; }

public void setAddress(String Address1) { this.Address = Address1; }

public void setSex(String Sex1) { this.Sex = Sex1; }

public void setPhone(String Phone1) { this.Phone = Phone1; }

}

私の条件クラス:

public class Conditions {

    private int Number;
    private String Name;

    public Conditions( int Number1,String Name1) {
        this.Number = Number1;
        this.Name = Name1;      
    }   

    public  int getNumber() {
        return Number;
    }

    public  String getName() {
        return Name;
    }   
}
4

2 に答える 2

2

渡されるリストは文字列のリストであり、ここで想定している条件のリストではないと思われます。

for(Conditions p: PassedIn)

しかし、あなたは私たちに先に進むためにほとんど与えていません。完全なエラー メッセージは何ですか?

また、 のタイプを に変更してみてMakePatientJListSelectedくださいArrayList<Condition>。コンパイラがそこに期待していることを伝えることがわかると思いますArrayList<String>

于 2013-03-02T21:27:32.593 に答える
2

メソッドは、ダウンキャストする必要がある入力ArrayListを受け取ります

ArrayList<Conditions> PassedIn = (ArrayList<Conditions>)PatientConList;
于 2013-03-02T21:29:10.423 に答える