2012-07-13 79 views
2

我試圖使用組合框來顯示錶中的內容。 我寫了下面的代碼,bu沒有顯示在表中。使用JComboBox在JTable中顯示

Integer i = ((Destination) (jComboBox1.getSelectedItem())).getId(); 
query1 = entityManager.createQuery("SELECT d FROM Dayactivity d WHERE d.id=:Id"); 
query1.setParameter("Id", i); 
java.util.Collection data = query1.getResultList(); 
list2.clear(); 
list2.addAll(data); 

當我改變下面的代碼時,它正確返回數據並顯示在表中。

Integer i = ((Destination) (jComboBox1.getSelectedItem())).getId(); 
query1 = entityManager.createQuery("SELECT d FROM Dayactivity d WHERE d.id=:Id"); 
query1.setParameter("Id", 2); 
java.util.Collection data = query1.getResultList(); 
list2.clear(); 
list2.addAll(data); 

爲什麼它不適用於第一個代碼(i),但在第二個代碼中適用於2?

有人可以幫我解決這個問題,我是新來的Java &的NetBeans

+0

調試變量「i」是否返回值。 – sakthi 2012-07-13 06:47:27

+0

是否將整數更改爲int可能? setParameter可能讀取整數作爲對象 – consprice 2012-07-13 07:33:56

回答

0

執行下列操作之一:

  • 調試代碼以查看i的實際值:

如果我是零,那麼你需要改變你如何訪問組合框的選擇的ID如下:

Integer i = ((Destination) jComboBox1.getSelectedIndex(); 
  • 您需要檢查他的方法的參數:

    1. query1.setParameter(String,int);或
    2. query1.setParameter(String,Integer);
0

變化i是如何初始化爲:

int i = jComboBox1.getSelectedIndex();