2016-03-03 82 views
-4

我想檢查值是否存在或在Tree當試圖從Tree添加節點。該值不匹配的情況下,我得到Object而不是String無法獲取Object字符串值;需要轉換爲字符串來比較

這裏是動作代碼調用existsInTable()

 try { 
     DefaultMutableTreeNode selectedElement = (DefaultMutableTreeNode) TestTree.getSelectionPath().getLastPathComponent(); 
     Object[] row = {selectedElement}; 
     DefaultTableModel model = (DefaultTableModel) myTests_table.getModel(); 

     if (selectedElement.isLeaf() == true && existsInTable(myTests_table, row) == false) { 
      model.addRow(row); 
     } else { 
      JOptionPane.showMessageDialog(null, "Please Choose Test name!", "Error", JOptionPane.WARNING_MESSAGE); 
     } 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, "Error"); 
    } 

以下是檢查方法

public boolean existsInTable(JTable table, Object[] testname) { 
    int row = table.getRowCount(); 
     for (int i = 0; i < row; i++) { 
     String str = ""; 
     str = table.getValueAt(i, 0).toString(); 
     if (testname.equals(str)) { 
      System.out.println(str); 
      JOptionPane.showMessageDialog(null, "data alreadyexist.", "message", JOptionPane.PLAIN_MESSAGE); 
      return true; 
     } 
    } 
    return false; 

} 
the result is this : [Ljava.lang.Object;@11da1f8  
but it should be : Test 
+1

什麼是錯誤? –

+0

謝謝 結果是這樣的:[Ljava.lang.Object; @ 11da1f8 但它應該是:Test –

+0

您正在以字符串格式打印對象,而不是給定對象的任何關聯變量。 –

回答

2

如果添加的Object一個實例你TableModel,那是什麼getValueAt()會返回。給定一個ObjecttoString()返回的結果是完全預期的 - 「一個字符串,由對象爲實例的類的名稱,符號字符@和對象的哈希代碼的無符號十六進制表示組成「。

仔細一看,您似乎已添加array of Object instances。給定一個默認的表模型,

DefaultTableModel model = new DefaultTableModel(1, 1); 

以下行

model.setValueAt(new Object[1], 0, 0); 
System.out.println(model.getValueAt(0, 0)); 

產生這樣的輸出:

[Ljava.lang.Object;@330bedb4 

要看到一個字符串,如 「測試」,加入相應的實例String到您的TableModel

model.setValueAt("Test", 0, 0); 
System.out.println(model.getValueAt(0, 0)); 

產生所需的輸出:

Test 

爲了達到最佳效果,請確認您的getColumnClass()實現兼容,如How to Use Tables: Concepts: Editors and Renderers建議。

+0

感謝您的回覆,,,實際上我的日期來自數據庫,您可以使此命令清除 model.setValueAt(「Test」,0,0); 如何將它與daynamic數據一起使用 –

+0

因爲它們非常方便,可以使用'java.sql.Date';這裏有一些[示例](http://stackoverflow.com/search?tab=votes&q=java.sql.date)。 – trashgod