2016-03-03 56 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