上代码
import javax.swing.*;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
/**优化的swing 输入框
* 获取鼠标焦点之后可以清除提示文字
* @author Tars
*/
public class myTextField extends JTextField {
private String text;
public myTextField(String text, int columns) {
super(text, columns);
this.text = text;
this.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
if(myTextField.this.getText().equals(myTextField.this.text)) myTextField.this.setText("");
}
@Override
public void focusLost(FocusEvent e) {
super.focusLost(e);
if(myTextField.this.getText().isEmpty()) myTextField.this.setText(myTextField.this.text);
}
});
}
}
说明
用过才知道swing真的是难用,一个文本框连提示文字都不给;
所以我直接重写了JTextField类,直接给类注册了两个窗口监听器,检测到文本框获取焦点之后便自己清除里面的示例文字,如果用户没有输入就在失去焦点时恢复示例文字。
杂记
swing是真滴难用😩