gpt4 book ai didi

java - 如何使 actionListener 方法动态化

转载 作者:行者123 更新时间:2023-12-02 13:29:02 27 4
gpt4 key购买 nike

我有一个 Till 系统,我希望将项目添加到 GUI 一侧的订单表 (JTable) 中。我还希望在单击每个 JButton 时获得订单的运行总计。我的问题是,我似乎无法使每个 JButton 的监听器方法足够动态,以便总数将根据订单上是否添加或删除项目而更新。它在 JTextField 中按下每个项目时对每个项目进行总计,但没有将其四舍五入到正确的小数位数,应该是 2。我尝试使用 DecimalFormat 但它不起作用。这是我的监听器方法之一。如果我能让这个方法正常工作并使其动态化,我就可以将相同的原则应用于其余的监听器方法。如果有人能指出我正确的方向,我将非常感激,谢谢。

// Small Americano ActionListener
americanoSmall.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String query = "select ProductName, Price from product where ProductID = 24";
java.sql.PreparedStatement pst = connection.prepareStatement(query);
ResultSet rs = pst.executeQuery();

// Loop through the ResultSet and transfer in the Model
java.sql.ResultSetMetaData rsmd = rs.getMetaData();
int colNo = rsmd.getColumnCount();
while (rs.next()) {
Object[] objects = new Object[colNo];

for (int i = 0; i < colNo; i++) {
objects[i] = rs.getObject(i + 1);
}
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addRow(objects);
Stock s = new Stock();
total = total + s.getItemPrice(24);
totalTF.setText(String.valueOf(total));
totalTF.setText(String.format("%.2f", total));

}
TableModel model = (DefaultTableModel) table.getModel();
table.setModel(model);
} catch (Exception e1) {
e1.printStackTrace();
}
}
});

最佳答案

I want to also have it dynamic enough so that if the order is edited -- ie: something is removed from the list, the total updates accordingly

TableModelListener 添加到 TableModel。当数据更改或添加或删除行时,将生成事件。然后,您只需迭代模型中的数据即可重新计算总数。

不要尝试保留运行总计,因为当您删除一行时,您将不知道要从总计中删除多少。

关于java - 如何使 actionListener 方法动态化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43265865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com