在資料模型表中插入行時,對于第一條記錄來說效果很好。如果表為空,如果條碼=bcode_txt 增加數量,則插入一行。但在第一次錄制后它不起作用。它增加并創建一個新行(重復)。以下是審查代碼。
private void jBCodeKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
int numofrows = jTable1.getRowCount();
if (numofrows == 0) {
insert_row();
}
if (!(numofrows == 0)) {
for (int i = 0; i < numofrows; i ) {
int c_bcode = Integer.parseInt(model.getValueAt(i, 2).toString());
int bcode_txt = Integer.parseInt(jBCode.getText());
if (bcode_txt == c_bcode) {
int curr_qty = Integer.valueOf(model.getValueAt(i, 3).toString());
String entered_qty = p_qty.getText();
Double up = Double.parseDouble(p_u_price.getText());
int q = Integer.parseInt(entered_qty);
Double tp = q * up;
model.setValueAt(tp, i, 6);
q = curr_qty;
model.setValueAt(q, i, 3);
} else if (!(bcode_txt == c_bcode) && (!(numofrows == 0))) {
insert_row();
}
}
}
}
}
uj5u.com熱心網友回復:
我將首先遍歷所有行以找出表中是否存在條形碼。完成后,您檢查是否應該更新現有行或插入新行。
您的基本邏輯可能類似于:
int barcodeRow = -1;
int bcode_txt = Integer.parseInt(jBCode.getText());
for (int i = 0; i < table.getRowCount(); i )
{
int c_bcode = Integer.parseInt(model.getValueAt(i, 2).toString());
if (bcode_txt == c_bcode)
{
barcodeRow = i;
break;
}
}
if (barcodeRow != -1)
// update the row
else
insertRow();
另請注意,您不應將 KeyListener 添加到文本欄位。相反,您可以添加一個ActionListener. 按下 Enter 鍵時將呼叫 ActionListener。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511845.html
標籤:爪哇摇摆表
上一篇:我在Jpanel上使用Jbuttons并在Jlist上添加這個jpanel。我在串列中使用addMouseListener。無法點擊Jpanel上的按鈕
