Как установить ключ и значение в JFace ComboViewer? - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь настроить поле со списком, которое будет отображать имя пользователя, но при выборе будет отправлять идентификатор вместо.

Я уже настроил метод, который запрашивает мою базу данных Derby и возвращает многомерный массив с именами пользователей и идентификаторами.

Я провел некоторое исследование о том, как это настроить, и нашел несколько постов, предлагающих JFace, но ничего о том, как этого добиться.

Я пробовал setData (String Key, Object Value) и добавить (String String, int index). Я также посмотрел на DataBinding, но не нашел ничего, что я мог бы заставить работать.

Спасибо

Обновление ---------------------- Я получил это работает в точку. Я думаю, что у меня правильно настроен поставщик контента, однако когда я запускаю приложение, оно печатает все метки так же, как последний элемент в списке.

Модель поставщика:

public enum ModelProvider {
INSTANCE;

public List<Animal> Animals;
public String conn = "L:\\Dropbox\\Herd_Management\\database";
private ModelProvider() {
    Animals = new ArrayList<Animal>();
    String strSQL = null;
    strSQL = "SELECT Herd_ID FROM dbherd_management.TBLHERD";
    String[] straHerd_IDs = CC_Derby.getResultArray(conn, "", "", strSQL);
    for (int r = 0; r < straHerd_IDs.length; r++) {
        Animals.add(new Animal(Integer.parseInt(straHerd_IDs[r])));
    }
}

public List<Animal> getAnimals() {
    return Animals;
}

}

Фрагмент для поставщиков содержимого и меток:

            comboViewer_9 = new ComboViewer(shlHerdManagement, SWT.NONE);
            final Combo cboAnimalTag = comboViewer_9.getCombo();
            cboAnimalTag.setLayoutData(new GridData(SWT.FILL, SWT.FILL,
                    true, false, 1, 1));
            cboAnimalTag.setText("<Select Animal Tag>");

            comboViewer_9.setContentProvider(new ArrayContentProvider());
                comboViewer_9.setInput(ModelProvider.INSTANCE.getAnimals());
            comboViewer_9.setLabelProvider(new LabelProvider() {
                  @Override
                  public String getText(Object element) {
                      Animal a = (Animal) element;
                      return (a.getTag());
                  }
                });

Конструктор животных

public Animal(int intAnimal_ID) {
    Connection conn = CC_Derby.createConnection("L:\\Dropbox\\Herd_Management\\database","","");
    String strSQL = "SELECT * FROM dbherd_management.TBLHERD WHERE HERD_ID ="
            + intAnimal_ID;

    try {
        stmt = conn.createStatement();
        ResultSet results = null;
        results = stmt.executeQuery(strSQL);
        while (results.next()) {
            intHerd_id = results.getInt(1);
            strHerd_Tag_Letter = results.getString(2);
            intHerd_Tag_Num = results.getInt(3);
            strHerd_Tag_Color = results.getString(4);
            strHerd_Sex = results.getString(5);
            strHerd_Type = results.getString(6);
            dtHerd_Birthdate = results.getString(7);
            intHerd_Sire = results.getInt(8);
            intHerd_Dam = results.getInt(9);
            intHerd_Owner = results.getInt(10);
            strHerd_TimeStamp = results.getString(11);
            strHerd_Status = results.getString(12);
            dtHerd_Status_Date = results.getString(13);
        }
        results.close();
        stmt.close();
        CC_Derby.shutdown(stmt, conn);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

Метод getTag

public String getTag(){
    String strResult = null;
    String l = null;
    int n = 0;
    String c = null;
    l = getHerd_Tag_Letter();
    n = getHerd_Tag_Num();
    c = getHerd_Tag_Color();
    if(l == null){
        l ="";
    }
    if(c == null){
        c = "";
    }
    strResult = l + n + " " + c;
    return strResult;
}

1 Ответ

0 голосов
/ 22 декабря 2011

У вас есть программа просмотра с поставщиком контента и поставщиком меток . Поставщик контента обслуживает объекты (UserNameIdPair), поставщик меток предоставляет метки (строка UserName). Прослушиватели представления будут "отправлены" объектам, предоставленным поставщиком контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...