Java Swing:JTable列

Java Swing:JTable列,java,swing,Java,Swing,这是我的问题。我必须创建一个包含3列(饮料、价格、数量)的Jtable,然后,我必须为结果总计创建一个按钮“add”和一个按钮“total”,其中包含一个JOptionPane 这是一个视觉: 我希望创建一个包含价格*数量的按钮“total”(带有JOptionPane)。但是,我不知道怎么做 这是我的密码 JFrame private void jButtonAjoutActionPerformed(java.awt.event.ActionEvent evt) {

这是我的问题。我必须创建一个包含3列(饮料、价格、数量)的
Jtable
,然后,我必须为结果总计创建一个按钮“add”和一个按钮“total”,其中包含一个
JOptionPane

这是一个视觉:

我希望创建一个包含价格*数量的按钮“total”(带有JOptionPane)。但是,我不知道怎么做

这是我的密码

JFrame

private void jButtonAjoutActionPerformed(java.awt.event.ActionEvent evt) {                                            
        String tmp = JOptionPane.showInputDialog(this, "Enter your drink please : ", "Title", JOptionPane.QUESTION_MESSAGE);
        float p = Float.parseFloat(JOptionPane.showInputDialog(this, "Enter your price please :", "Title", JOptionPane.QUESTION_MESSAGE));
        int quant = Integer.parseInt(JOptionPane.showInputDialog(this, "Enter your quantity please :", "Title", JOptionPane.QUESTION_MESSAGE));
        if (tmp != null)
        {
            myModel.addElement(new Drink(tmp, p, quant));
        } //(tmp != null)

    }                                           

    private void jButtonSumActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // Button total
        float result = 0;
        for(int y = 0; y < jTable1.getRowCount(); y++)
        {
            result = Float.parseFloat(jTable1.getValueAt(y, 1).toString());
        }

    }

谢谢你的帮助

很简单。只需将以下方法添加到您的
表格中即可

public Drink drinkAt(int row) {
    return myList.get(row);
}
然后,您可以按如下方式实现求和方法:

private void jButtonSumActionPerformed(java.awt.event.ActionEvent evt) {                                          
    TableModelDrinks model = (TableModelDrinks) jTable1.getModel();
    float result = 0;
    for (int i = 0; i < model.getRowCount(); i++) {
        Drink d = model.drinkAt(i);
        result += d.getPrice() * d.getQuantity();
    }
    NumberFormat format = NumberFormat.getCurrencyInstance();
    JOptionPane.showMessageDialog(jTable1, "Your total price is: " + format.format(result), "Price", JOptionPane.INFORMATION_MESSAGE);
}
private void jbuttonsuactionperformed(java.awt.event.ActionEvent evt){
TableModelDiverss model=(TableModelDiverss)jTable1.getModel();
浮动结果=0;
对于(int i=0;i
这很简单。只需将以下方法添加到您的
表格中即可

public Drink drinkAt(int row) {
    return myList.get(row);
}
然后,您可以按如下方式实现求和方法:

private void jButtonSumActionPerformed(java.awt.event.ActionEvent evt) {                                          
    TableModelDrinks model = (TableModelDrinks) jTable1.getModel();
    float result = 0;
    for (int i = 0; i < model.getRowCount(); i++) {
        Drink d = model.drinkAt(i);
        result += d.getPrice() * d.getQuantity();
    }
    NumberFormat format = NumberFormat.getCurrencyInstance();
    JOptionPane.showMessageDialog(jTable1, "Your total price is: " + format.format(result), "Price", JOptionPane.INFORMATION_MESSAGE);
}
private void jbuttonsuactionperformed(java.awt.event.ActionEvent evt){
TableModelDiverss model=(TableModelDiverss)jTable1.getModel();
浮动结果=0;
对于(int i=0;i
在addElement(…)方法中,不要使用
fireTableDataChanged(…)
。这会导致表的额外工作。该表将重新创建所有表列,因为它认为所有数据都已更改。而是使用
fireTableRowsInserted(…)
。现在只会重新绘制单行。在addElement(…)方法中,不要使用
fireTableDataChanged(…)
。这会导致表的额外工作。该表将重新创建所有表列,因为它认为所有数据都已更改。而是使用
fireTableRowsInserted(…)
。现在,只有一行将被重新绘制。