如何从java中的组合框中删除Ljava.lang.String?

时间:2016-04-17 17:52:48

标签: java swing jcombobox

在下面的代码中,我试图访问一个特定的数据库行,并将它的所有元素放在一个组合框中,但组合框显示[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");
                };
             }); 


}

2 个答案:

答案 0 :(得分:3)

此处:cb.setModel(new DefaultComboBoxModel(result.toArray()));您调用的result.toArray()又是String[][]数组。您在组合框中看到了这一点,因为Java添加了String[]的字符串表示形式,而不是实际内容。

答案 1 :(得分:2)

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

如果你真的想让你的组合框包含字符串数组(我不建议这样做:你最好使用定义良好的类的实例),你需要在组合框上set a renderer告诉你如何渲染String数组的方框。

如果您不打算在组合框中使用String数组(并且您似乎想要使用字符串,而不是String数组),那么您需要将行列表转换为String数组,而不是String []。

的数组

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