我想它打字的东西后JTextField的颜色变为红色,再进行第二次返回到默认的白色背景之后。我想这听者外,和它的工作,但是当谈到作为一个听者的一部分,它不会(它只是跳过设置红色)。这是怪异我..两个设置背景和睡眠线程
public class Test {
JFrame frame;
JTextField field;
public Test() {
frame = new JFrame();
field = new JTextField("A");
field.addKeyListener(new KeyBListener());
frame.getContentPane().add(field);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) { new Test(); }
private class KeyBListener implements KeyListener {
@Override
public void keyTyped(KeyEvent e) {
try {
field.setBackground(Color.RED);
Thread.sleep(1000);
field.setBackground(Color.WHITE);
} catch (InterruptedException es) { es.printStackTrace(); }
}
@Override
public void keyPressed(KeyEvent e) { }
@Override
public void keyReleased(KeyEvent e) { }
}
}
您需要阅读事件调度线程(EDT)。对于像这样的更新,他们必须在EDT之外发生,否则,您会阻止重新绘制显示。 – Speakjava