我在文本字段中设置了默认文本,当用户关注文本字段时,程序如何删除此文本。副Versa,当用户没有专注于文本字段时,默认文本会回来。
我正在考虑在TF上添加一个动作事件,但这只有在用户点击输入按钮同时专注于TF时才有效。一个线程会起作用吗?
答案 0 :(得分:3)
考虑将FocusListener添加到JTextField。在focusGained(FocusEvent e)
方法中,您可以检查JTextField的文本,如果它与预览文本完全匹配,则将其删除。在focusLost(FocusEvent e)
方法中,检查JTextField是否为空,如果是,则重新添加默认文本。
myTextField.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e){
// get text from JTextField
// if text matches default text, either select all, so user can keep it or change it
// or delete it --- your choice
}
public void foucsLost(FocusEvent e){
// check if JTextField's text is empty.
// if so, cal setText(DEFAULT_TEXT) on the field
}
});
答案 1 :(得分:0)
您可以在任何JTextFields上调用这些函数
public void FocusGainedEmptyBox(JTextField txt)
{
txt.setText(null);
}
public void FocusLostFillBox(JTextField txt)
{
if(!txt.getText().equals(""))
{
txt.setText("I am Back");
}
}
在Focus Gained上调用FocusGainedEmptyBox(txtValue),在Focus Lost上调用FocusLostFillBox(txtValue)。
答案 2 :(得分:0)
如果您需要在文本字段上使用DocumentListener来了解文本何时更改,则在文本字段中添加/删除文本可能会导致问题。
要解决此问题,请查看Text Prompt。
答案 3 :(得分:0)
我认为你想像HTML占位符那样做,
private void txtSearchStandardFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
if (txtSearchStandard.getText().equals("")) {
txtSearchStandard.setText(" Type Here to Search Standard");
txtSearchStandard.setForeground(Color.GRAY);
}
}
private void txtSearchStandardFocusGained(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
if (txtSearchStandard.getText().equals(" Type Here to Search Standard")) {
txtSearchStandard.setText("");
}
txtSearchStandard.setForeground(Color.BLACK);
}
但是,每当您尝试在同一个TEXTFIELD上添加其他事件时,请记住这一点