2011-12-21 2 views
0

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

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

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

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

Спасибо,

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

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

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; 
} 
+0

Настройка просмотра выглядит нормально. Из кода неясно, что такое значение 'getTag()'. –

+0

Я добавил конструктор животных и метод getTag() – Talon06

+0

Я не вижу здесь проблем, извините. Я могу предложить только отладку ... –

ответ

0

У вас есть зритель с content provider и label provider. Поставщик контента обслуживает объекты (UserNameIdPair), поставщик ярлыков предоставляет метки (строка UserName). View selection listeners будет «отправлен» объектами, предоставленными поставщиком контента.

+0

Редактировать вопрос с новыми выводами. – Talon06

Смежные вопросы