7

材料のクラスがあります

public class Ingredient {
String NameP;
List ListS;
String Desc;
List ListT;
...

このクラスの複数のインスタンスは、オブジェクトリストに格納されます。私も持っています

javax.swing.JList ListIng;

モデルをに設定すると

ListIngModel = new DefaultListModel();

Jlistを使用して、すべてのオブジェクトのフィールド「NameP」を表示し、さらに検査するオブジェクトの1つを選択してから、選択したオブジェクトを取得するという考え方です。

Ingredient Selected = ListIngModel.get(ListIng.getSelectedIndex())

リストモデルにオブジェクトをロードできますが、JListにそれらのアドレスが表示されます。保存するオブジェクトのプロパティを表示するためのエレガントな方法はありますか?

4

1 に答える 1

7

JListあなたは'sを利用する必要がありますCellRenderer

詳細については、リストの使用方法をご覧ください。

基本的に、リストモデルのgiveオブジェクトがビューにどのように表示されるかを定義できます。この方法では、実行時にビューを置き換える場合でも、必要に応じてビューをカスタマイズできます。

例えば

public class IngredientListCellRenderer extends DefaultListCellRenderer {
    public Component getListCellRendererComponent(JList<?> list,
                                 Object value,
                                 int index,
                                 boolean isSelected,
                                 boolean cellHasFocus) {
        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
        if (value instanceof Ingredient) {
            Ingredient ingredient = (Ingredient)value;
            setText(ingredient.getName());
            setToolTipText(ingredient.getDescription());
            // setIcon(ingredient.getIcon());
        }
        return this;
    }
}
于 2013-02-06T22:58:16.430 に答える