java中JTextField添加提示文字功能

在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

猜你喜欢

转载自blog.csdn.net/qq_40726746/article/details/89549055
今日推荐