作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将 ComponentListener
添加到 JTextField
父级,如下所示:
parent.addComponentListener(new ComponentAdapter() {
@Override
public void componentHidden(ComponentEvent e) {
setText("");
}
});
因此在parent 变得不可见之后,textField
text 被设置为“”。一切正常,但问题是当我将父级设置为可见时 - 显示 textField
的先前文本几毫秒,然后字段变为空。所以不是很好..
最佳答案
在将父级设置为不可见之前,设置了textField
字段textField.setText(null);
(不需要重新绘制),那么问题就出在焦点上了-它必须设置为一些初始组件,如 panel.requestFocusInWindow();
。但重点并不总是及时设置。所以 Timer
类解决了这个问题:
textField.setText(null);
panel.requestFocusInWindow();
final int timeout = 5;
Timer timer = new Timer(timeout, new ActionListener() {
int a = 0;
@Override
public void actionPerformed(ActionEvent e) {
if (panel.isFocusOwner() || a > 500) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
setVisible(false);
}
});
((Timer) e.getSource()).stop();
}
a += timeout;
}
});
timer.setRepeats(true);
timer.start();
现在,如果 setVisible(true);
显示为新创建的对话框窗口(父级)- 没有闪烁的文本字段并且正确聚焦。最后..:)
关于java - 如何在父组件设置为 `setVisible(false)` 后清除 JTextField 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18342097/
我是一名优秀的程序员,十分优秀!