是否有可能当我单击文本字段时,它会清除那里输入的最近文本?我的情况是,假设这些是文本字段。
Name: Last Name First Name Middle Initial
然后我会单击姓氏,它将被清除,与名字和中间名首字母相同。感谢阅读,希望你能帮到我。
是否有可能当我单击文本字段时,它会清除那里输入的最近文本?我的情况是,假设这些是文本字段。
Name: Last Name First Name Middle Initial
然后我会单击姓氏,它将被清除,与名字和中间名首字母相同。感谢阅读,希望你能帮到我。
考虑一个 FocusListener,其中所有文本都被选中:
myTextField.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent fEvt) {
JTextField tField = (JTextField)fEvt.getSource();
tField.selectAll();
}
});
通过选择所有文本,您可以让用户选择键入并删除当前文本并将其替换为新文本,或者使用鼠标或箭头键保留当前文本并可能更改它。
我认为气垫船是对的。最好使用 aFocusListener
来达到这个目的。
我会编写一个可以处理这个问题的实用程序类,我已经为自动选择做了类似的事情。意味着我不必扩展出现的每个文本组件,也不必因为失去做同样事情的小焦点听众而混乱。
public class AutoClearOnFocusManager extends FocusAdapter {
private static final AutoClearOnFocusManager SHARED_INSTANCE = new AutoClearOnFocusManager();
private AutoClearOnFocusManager() {
}
public static AutoClearOnFocusManager getInstance() {
return SHARED_INSTANCE;
}
@Override
public void focusGained(FocusEvent e) {
Component component = e.getComponent();
if (component instanceof JTextComponent) {
((JTextComponent)component).setText(null);
}
}
public static void install(JTextComponent comp) {
comp.addFocusListener(getInstance());
}
public static void uninstall(JTextComponent comp) {
comp.removeFocusListener(getInstance());
}
}
然后你只需要使用
JTextField textField = new JTextField("Some text");
AutoClearOnFocusManager.install(textField);
如果您只是想提供“提示”(提示用户的字段内的文本),您还可以查看Prompt API
为什么不使用mouseClicked
事件?
所以,你可以有类似的东西
jTextFieldMyText.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTextFieldMyTextMouseClicked(evt);
}
});
private void jTextFieldMyTextMouseClicked(java.awt.event.MouseEvent evt) {
jTextFieldMyText.setText("");
}
在焦点的情况下
jTextFieldMyText.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
jTextFieldMyTextFocusGained(evt);
}
});
private void jTextFieldMyTextFocusGained(java.awt.event.MouseEvent evt) {
jTextFieldMyText.setText("");
}
如果不希望立即删除文本,请多次使用selectAll()
而不是建议setText("")