Я хочу знать, когда я пишу, и когда я удаляю, но после задержки на 0,5 секунды он скажет мне: «Вы перестали писать/удалять» Однако это только показывает это сообщение, и оно удалите или напишите после половины второй задержки.DocumentListener with Thread.sleep
Как правильно использовать Thread.sleep(500);
?
Мой текущий исходный код:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class TextChangedFrame extends JFrame {
JTextField textField = new JTextField("Put your text here");
JLabel label = new JLabel("You have written: ");
public TextChangedFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 100);
setLayout(new BorderLayout());
getContentPane().add(textField, BorderLayout.CENTER);
getContentPane().add(label, BorderLayout.SOUTH);
textField.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
label.setText("I'm writting: " + textField.getText());
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
}
label.setText("I stopped writing");
}
public void removeUpdate(DocumentEvent e) {
label.setText("I'm deleting");
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
}
label.setText("I stopped deleting");
}
public void changedUpdate(DocumentEvent e) {
}
});
}
public static void main(String[] args) {
TextChangedFrame frame = new TextChangedFrame();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Никогда не называйте 'Thread.sleep (...)' в потоке отправки событий Swing, EDT. Когда-либо. Если вы не хотите, чтобы все приложение спало. –
Ow, так как я могу это сделать? – DavidM
Я не уверен, что вы просите. Я отредактировал, чтобы попытаться уточнить, но это очень помогло бы, если бы вы могли отредактировать свой вопрос для деталей. В настоящее время кажется, что вы спрашиваете, что делает 'thread.sleep (int x)', что приостанавливает любые операции, которые текущий поток выполняет для 'x' миллисекунд (Thread.sleep (1000) = 1 секунда). – Azulflame