2015-02-01 4 views
0

У меня есть программа, которая проверяет цены, введя штрих-коды. Я хочу, чтобы поле штрих-кода автоматически очищалось после прочтения первого штрих-кода. Он должен хранить введенную информацию всего за 5 секунд и очищать следующую запись.Очистить JTextfields после определенного таймаута

Вот мой код и я использую 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); 
    } 
} 

ответ

1

использовать таймер с 5-секундной задержкой и установить ActionPerformed вызвать .setText («») на JTextField.

http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html

+0

я попытался создать новый таймер, но вещи не работают. может кто-то помочь n пересмотреть мой код. я действительно хочу, чтобы поле штрих-кода удерживало запрос пользователя всего на 5 секунд и было готово к другому запросу. Помогите мне создать код. – Emma

0
  • Не используйте KeyListener, espeically текстовых компонентов. Если вы хотите знать, когда текстовый компонент был изменен, вместо этого используйте DocumentListener.
  • Используйте Swing javax.swing.Timer для установки обратного вызова в нужное время в будущем, просто убедитесь, что вы используете setRepeats(false), поэтому он будет запускаться только один раз.

См:

для более подробной информации

В качестве альтернативы можно было бы назвать selectAll на текстовое поле после того, как вы заселена. Это гарантирует, что следующее значение, примененное (при вводе), очистит его.

setText также очистить поле и заменить его содержимое с тем, что когда-либо вы задаете

0

Вы должны использовать нить или таймер, вызывается после 5000 мс очистит деталь JTextField. проверить эту ссылку Simple timer code

java.lang.Thread javadoc

+0

Swing не является потокобезопасным, и любые обновления пользовательского интерфейса должны выполняться из контекста Диспетчерского потока событий. Вы предлагаете нарушать правила потоковой передачи Swing и не предлагают ничего нового, которое еще не было предложено. – MadProgrammer

+0

Я попытался создать новый таймер, но все не работает. может кто-то помочь n пересмотреть мой код. я действительно хочу, чтобы поле штрих-кода удерживало запрос пользователя всего на 5 секунд и было готово к другому запросу. Помогите мне создать код. – Emma

Смежные вопросы