当我点击文本框时,是否有可能清除最近输入的文本?我的意思是,假设这些是textfields。单击文本框并清除文本?
Name: Last Name First Name Middle Initial
然后我单击姓氏,它将被清除,与名字和中间名初始相同。感谢您的阅读,希望您能帮助我。
当我点击文本框时,是否有可能清除最近输入的文本?我的意思是,假设这些是textfields。单击文本框并清除文本?
Name: Last Name First Name Middle Initial
然后我单击姓氏,它将被清除,与名字和中间名初始相同。感谢您的阅读,希望您能帮助我。
为什么不使用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("");
}
的情况下,如果删除文本inmediatelly没有什么希望,用selectAll()
代替setText("")
的建议多次
并且如果用户键入字段?我认为没有一个FocusListener会更好。 –
那么,这取决于user1694994的想法......他说,想要发生点击,而不是焦点......无论如何,这是一个altenative – mishamosher
使用FocusListener,如果当前文本组件没有焦点,则在点击时会发生该行为。 –
考虑一个FocusListener,其中所有文本都被选中:
myTextField.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent fEvt) {
JTextField tField = (JTextField)fEvt.getSource();
tField.selectAll();
}
});
通过选择所有文本,您可以让用户选择是打字还是删除当前文本并将其替换为新文本,或使用鼠标或箭头键保留当前文本并可能更改它。
有一个很好的关于“Tab”的选项卡(十可用性启发式: http://www.useit.com/papers/heuristic/heuristic_list.html) – user1406062
感谢您的帮助 – user1694994
@Hussain:感谢您的评论和链接! –
我认为气垫船是对的。最好使用FocusListener
来达到这个目的。
我会写一个实用程序类来处理这个问题,我为自动选择做了类似的事情。意味着我不必延伸每一个出现的文本组件,或者混淆了做同样事情的小焦点听众的迷失。
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
你的用户似乎是受虐狂;-) – kleopatra
@kleopatra你不知道:P – MadProgrammer
使用textchange事件 –
什么是textchange事件?我会为此使用FocusListener。 –
如果用户想要在导航到下一个字符后更正其中一个字符,该怎么办?你想让他/她每次都重新开始吗? – user1406062