0

私のプログラムは API に基づいています。私は JList と、いくつかの名前を持つモデルを取得しました。そして、選択されたアイテムを取得するためのselectListenerと、そのアイテムを別のウィンドウに送信するためのボタンがあります。これが私の最初のリストです。

最初のリスト (ウィンドウ) を開き、アイテムを他のリストに送信します。

final DefaultListModel<String> Names = new DefaultListModel<String>();
final JList<MyAPI> Places = new JList(Names);

private JList<MyAPI> locList;
private DefaultListModel<MyAPI> favourites;

    public AddLocation(JList<MyAPI> locList, DefaultListModel<MyAPI> favourites){
        this.locList = locList;
        this.favourites = favourites;
}


addThis.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
     Object chose = Places.getSelectedValue();
     favourites.addElement((MyAPI) chose); // error in this line
                }
            });

そして、これは選択した項目をここに追加する必要がある別のウィンドウです:

final DefaultListModel<MyAPI> favourites;
final JList<MyAPI> locList;

favourites = new DefaultListModel<MyAPI>();
locList = new JList<MyAPI>(favourites);

したがって、両方のウィンドウがロードされ、最初のリストがその名前とともにロードされます。しかし、ボタンを押すとこれを追加すると、エラーが発生し、次の行が示されます。

favourites.addElement((MyAPI) chose);

どうすれば解決できますか?

4

1 に答える 1

1

最初のモデルは次のように定義されます。

final DefaultListModel<String> Names ...;

2 番目のモデルは次のように定義されます。

final DefaultListModel<MyAPI> favourites;

最初のリスト モデルにはインスタンスStringが含まれ、2 番目のモデルにはMyAPIインスタンスが含まれます。したがって、この行が実行されると:

favourites.addElement((MyAPI) chose);

MyAPIaからa を作成しようとしていますがString、これは機能せず、おそらく aClassCastExceptionがスローされます。

2 番目のリスト モデルを次のように宣言するか、選択した( ?)に基づいてfinal DefaultListModel<String> favourites;のインスタンスを作成する必要があります。MyAPIStringnew MyAPI(chose)

于 2013-03-31T11:52:18.227 に答える