2016-04-17 27 views
0

在下面的代码中,我试图访问数据库的一个特定行,并将它的所有元素都放在组合框中,但组合框显示的是[Ljava.lang.String,...而不是字符串值。请帮助在组合框中显示字符串值。如何从java组合框中删除Ljava.lang.String?

void defaulters() 
{ 
    try 
    { 
     Connection con = DriverManager.getConnection(url, user, password); 
     final Statement stmt = con.createStatement(); 
     ArrayList <String[]> result = new ArrayList<String[]>();   
     ResultSet rs = stmt.executeQuery("SELECT c_name FROM customers"); 
     int columnCount = rs.getMetaData().getColumnCount(); 
     while(rs.next()) 
     { 
      String[] row = new String[columnCount]; 
      for (int i=0; i <columnCount ; i++) 
      { 
        row[i] = rs.getString(i + 1); 
      } 

      result.add(row); 
     } 

     final JComboBox cb=new JComboBox(); 
     JFrame f=new JFrame(); 
     JLabel amt= new JLabel("Pending Amount: ", JLabel.RIGHT); 
     JLabel cid= new JLabel("Customer ID: ", JLabel.RIGHT); 
     final JTextField pamt = new JTextField(10); 
     cb.setModel(new DefaultComboBoxModel(result.toArray())); 
     JButton sumbit = new JButton("Sumbit"); 
     f.add(cid);f.add(cb);f.add(amt);f.add(pamt);f.add(sumbit); 
     f.setSize(400, 400); 
     f.setLayout(new FlowLayout()); 
     f.setTitle("Defaulters"); 
     f.setVisible(true); 
     String row = (String)cb.getSelectedItem(); 

     sumbit.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) 
      { 
       try { 
        stmt.executeUpdate 
        ("insert into buyers values('"+cb.getSelectedItem()+"','"+pamt.getText()+"');"); 
       } catch (SQLException e1) { 
        e1.printStackTrace(); 
       }    
       System.out.println("Success"); 
       }; 
      }); 


} 

回答

3

这里:cb.setModel(new DefaultComboBoxModel(result.toArray()));你叫result.toArray()这又一个String[][]阵列。你会发现在你的组合框中,因为Java添加了String[]的字符串表示,而不是实际的内容。

2

您正在将组合框模型中的字符串数组(即String[]实例)存储起来。数组的toString()方法产生你所看到的。

如果你真的打算让你的组合框包含字符串数组(我不建议你:你最好使用定义良好的类的实例),你需要在组合框上set a renderer告诉框如何一个String数组应该被渲染。

如果你不打算在你的组合框中有字符串数组(而你似乎想要有字符串而不是字符串数组),那么你需要将你的行列表转换成一个String数组,一个String []的数组。

无关:您最好学会使用prepared statements