在xcode中,textfield添加提示文字只需在右侧功能区自定义文字就好,然而在eclipse下开发Java.swing时(虽然几乎已经没人用swing来做GUI了...),需要自定义焦点事件来创建提示文字。
网上几乎所有教程都是实现FocusListener的interface,实在是太麻烦,而且没法配合windowbuilder来直接拖拽原组件,这里提供一种直接重写FocusAdapter类的方法。
1.FocusAdapter类的重写
//参数:jtextfield组件,提示文字string
class focusAdapterWithReminderTextAdapter extends FocusAdapter{ //JTextField提示文字通用方法
JTextField txt;
String remindertxtString;
//初始化
public focusAdapterWithReminderTextAdapter(JTextField txt_,String reminderString_) {
// TODO Auto-generated constructor stub
txt = txt_;
remindertxtString = reminderString_;
}
//焦点获得
@Override
public void focusGained(FocusEvent e) {
String tempString = txt.getText();
//String tempString = this.getText();
if (tempString.equals(remindertxtString)){
txt.setText("");
txt.setForeground(Color.BLACK);
}}
//焦点失去
@Override
public void focusLost(FocusEvent e) {
String tempString = txt.getText();
if(tempString.equals("")) {
txt.setForeground(Color.GRAY);
txt.setText(remindertxtString);
}
}
}
2.应用
txtName = new JTextField();
txtName.setName("Name...");
txtName.addFocusListener(new focusAdapterWithReminderTextAdapter(txtName,txtName.getName()));//设置提示文字
注意:默认情况下txtName的Name成员是null,这里可以利用setName将其设置为提示文字,进而调用如下方法:
txtName.addFocusListener