将数据库ID添加到Eclipse Combo

时间:2011-12-07 22:05:07

标签: java mysql eclipse combobox

我正在研究Eclipse中的Java应用程序,它将数据从MySQL数据库中提取出来。我正在填充一个包含数据的组合框。到目前为止,我可以获得要显示的字段的值,但我无法弄清楚如何存储数据库行的唯一ID值。我发现的一个建议是创建一个可以存储显示值和id值的自定义类。但是,这似乎不适用于Eclipse小部件组合对象。这就是我所拥有的

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

c.add(ci)的上述错误。它期待一个字符串,而不是一个对象。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

不知道但是,无论如何,我一直认为这是一个糟糕的举动。 创建一个comboitems的集合/列表,从comboitem.display填充该小部件。 组合中的索引是集合中的索引。 意味着您可以在没有UI或简单模拟的情况下对大量事物进行单元测试,并且可以使您远离数据模型中的桌面特定实现。

答案 1 :(得分:0)

组合小部件显示一个String的数组,因此如果要同时显示这两个值,只需将它们连接起来。我不确定你的最终目标是什么。如果要根据组合选择选择合适的组合项,则将组合项存储在Map中,并使用组合值作为键。

另一种方法是使用jface ComboViewer,它允许您设置复杂对象的输入,提供标签提供程序以及围绕Combo小部件的更复杂的控件。

您还应该查找有关java编码约定的一些信息,而不是直接从UI访问您的数据库,除非这是一个非常简单的应用程序。

您可以找到有关使用大多数SWT小部件here的一些示例。