我有一個Till系統,我希望將項目添加到GUI側的我的訂單表(JTable)。我還想要點擊每個JButton時的訂單總數。我的問題是,雖然我似乎無法使每個JButton的監聽器方法都足夠動態,所以總數將根據訂單上是否添加或刪除項目進行更新。它是在JTextField中按下的每個項目的總和,但它不會將它舍入到應該是2的小數位的正確數目。我嘗試過使用DecimalFormat並且它沒有工作。這是我的一個聽衆方法。如果我可以使這個方法正常工作並使其動態化,那麼我可以將相同的原則應用於其餘的偵聽器方法。如果任何人都能指出我正確的方向,我會非常感激,謝謝。我如何使actionListener方法動態
// 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();
}
}
});
考慮到這一點,總數是對'TableModel'中信息的反映,所以當你更新數據庫時不是試圖更新計數器,而是當'TableModel'改變時更新計數器 - 這提供了並將數據更新與數據庫分開分離,使其更加靈活且更易於測試 – MadProgrammer
*「我嘗試過使用DecimalFormat並且它沒有工作」* - 它是如何工作的?什麼是輸入,輸出是什麼,它與預期結果有什麼不同?你是如何使用它的?在處理金錢時,最好使用'BigDecimal'或'long',但這可能超出了分配的範圍 – MadProgrammer
我試過了:DecimalFormat df = new DecimalFormat(「#。00」); totalTF.setText(Double.toString(df.format(total))); – Movillian