如何将两种类型的值添加到JTable行?

问题描述 投票:0回答:1
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)     
{                                         
    try {

        Connection c = DBconnection.conn();
        PreparedStatement ps = c.prepareStatement("SELECT * from menu where items=?");
        ps.setString(1, (String) jComboBox2.getSelectedItem());
        ResultSet rs = ps.executeQuery();           
        DefaultTableModel tbn = (DefaultTableModel) jTable1.getModel();

        Vector v = new Vector<>();
        v.add(jComboBox2.getSelectedItem());
       v.add(qty.getText());

在这一行后,我需要添加类型为double的价格,我从数据库中取出它。我需要知道如何做。请有人帮忙

        tbn.addRow(v);

我在这里计算总数。 double total = 0;

        for(int i=0; i<jTable1.getRowCount(); i++)
        {
            double amount = Double.parseDouble(String.valueOf(jTable1.getValueAt(i, 2)));
            jTable1.getValueAt(i,1));
            total+=amount;
        }
        Ltot.setText(String.valueOf(total));
    } catch (Exception ex) {
        Logger.getLogger(pos.class.getName()).log(Level.SEVERE, null, ex);
    }


}                         *emphasized text*
java swing jtable netbeans-8
1个回答
0
投票

Autoboxing应该让你轻松添加双倍:

v.add(price);

double是一个原始类型,你不能将它们添加到Vectors,但Java有一个对应于每个基元的对象类型,因此它将price转换为当场的Double实例,并将该实例添加到你的Vector

快速旁注:这意味着,除了其他因素之外,由于您创建的新对象,您将在堆空间中支付一小笔费用,因此如果您经常这样做,请注意这一点。

另外:DefaultTableModel非常简洁,因为TableModels去了。但它可以非常容易地进行原型设计。当你有空闲时间,并且如果你需要改进这些代码,我鼓励你寻找TableModel的实现,你会发现它们更适合各种方式,比如让您从现有数据结构中提取值,而不是将它们放入全新的Vectors中。例如,一个好的下一步是为这个特定的表编写自己的TableModel实现。

© www.soinside.com 2019 - 2024. All rights reserved.