我有一个程序可以通过输入条形码来检查价格。我希望条形码字段在读取第一个条形码后自动清除。它应该只保留输入的信息5秒钟,并清除下一个条目。
这是我的代码,正在使用JFrame
。它运作良好,但需要一些帮助来确定每个条目的会话时间。
private void txt_barcodeKeyReleased(java.awt.event.KeyEvent evt) {
try {
String sql = "select * from items where barcode=?" ;
pst = conn.prepareStatement(sql);
pst.setString(1, txt_barcode.getText());
rs = pst.executeQuery();
if (rs.next()) {
String add1 = rs.getString("item_des");
txt_description.setText(add1);
String add2 = rs.getString("retail1");
txt_price.setText(add2);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
答案 0 :(得分:1)
使用延迟5秒的定时器并将ActionPerformed设置为在JTextField上调用.setText("")。
http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html
答案 1 :(得分:0)
KeyListener
,尤其是文本组件。如果您想知道文本组件何时发生更改,请改用DocumentListener
。javax.swing.Timer
在将来的所需时间设置回调,只需确保使用setRepeats(false)
,因此它只会触发一次。请参阅:
了解更多详情
作为替代方案,您可以在填充后在文本字段上调用selectAll
。这将确保应用的下一个值(键入时)将其擦除干净。
setText
也会清除该字段,并将其内容替换为您指定的内容
答案 2 :(得分:0)
您应该使用线程或计时器,在5000毫秒后调用将清除JTextField项。 检查此链接 Simple timer code