2011-12-07 7 views
1

私は、MySQLデータベースからデータを取り出すEclipseのJavaアプリケーションを開発中です。私はコンボボックスにデータを入力しています。これまではフィールドの値を表示することはできますが、データベース行の一意のID値を格納する方法を理解することはできません。私が見つけた1つの提案は、表示値とid値の両方を格納できるカスタムクラスを作成することでした。ただし、これはEclipseウィジェットのコンボオブジェクトでは動作しません。これは私がc.add(CI)でEclipseコンボにデータベースIDを追加する

import org.eclipse.swt.widgets.Combo; 

class myClass { 
    public static void createCombo(ResultSet rs) { 
     Combo c = new Combo(); 
     while(rs.next()) { 
     int id = rs.getInt("id"); 
     int display = rs.getString("display"); 
     comboitem ci = new comboitem(id,display); 
     c.add(ci); 
     } 
    } 
} 
class comboitem { 
    private int _id; 
    private String _display; 

    public comboitem(int id, String display) { 
    this._id = id; 
    this._display = display; 
    } 
    public int getID(){ 
     return _id; 
    } 
    public String toString(){ 
    return _display; 
    } 
} 

上記のエラーを持っているものです。それはオブジェクトではなく文字列を期待しています。これを行う方法はありますか?

答えて

0

私はいつもそれはとにかく悪い動きだと感じました。 comboitemのコレクション/リストを作成し、comboitem.displayからウィジェットを取り込みます。 コンボ内のインデックスは、コレクション内のインデックスです。 UIや単純なモックなしでたくさんのものをテストすることができ、データモデルのデスクトップ固有の実装から遠ざけることができます。

0

コンボウィジェットはStringの配列を表示するので、両方を表示したい場合は、2つの値を連結するだけです。私はあなたの最終目標があなたの質問から何であるか分かりません。コンボ選択に基づいて適切なコンボアイテムを選択する場合は、マップにコンボアイテムを格納し、コンボ値をキーとして使用します。

もう1つの方法は、入力を複雑なオブジェクトに設定し、ラベルプロバイダーとコンボウィジェットの周りのより複雑なコントロールを提供することができるjface ComboViewerを使用することです。

Javaコーディング規則に関する情報を参照し、非常に単純なアプリケーションでない限り、UIから直接データベースにアクセスしないようにする必要があります。

ほとんどのSWTウィジェットの使用例は、hereです。

関連する問題