可以靠焦点得失之后,进行判定,如果为空字符串,就显示默认值
代码:
import java.awt.event.*;
import javax.swing.*;
public class DefaultValueTextField extends JTextField {
public DefaultValueTextField() {
this.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
clearDefault();
}
@Override
public void focusLost(FocusEvent e) {
showDefault();
}
});
}
@Override
public String getText() {
String s = super.getText();
if (s.equals(DEFAULT)) {
return "";
} else {
return s;
}
}
@Override
public void setText(String t) {
if (t.equals("")) {
super.setText(DEFAULT);
} else {
super.setText(t);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextField f = new DefaultValueTextField();
f.setColumns(20);
JPanel panel = new JPanel();
panel.add(f);
JButton button = new JButton("reset");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
f.setText("");
}
});
panel.add(button);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
private void clearDefault() {
if (super.getText().equals(DEFAULT)) {
this.setText("");
}
}
private void showDefault() {
if (super.getText().equals("")) {
this.setText(DEFAULT);
}
}
private static final String DEFAULT = "INPUT HERE!";
}
JTextField(int columns)
构造一个具有指定列数的新的空 TextField。
JTextField(String text)
构造一个用指定文本初始化的新 TextField。
JTextField(String text, int columns)
构造一个用指定文本和列初始化的新 TextField。
上面是常用的构造方法,多多看看帮助文本吧。
JTextField jtf = new JTextField("默认值");
其实很简单
JTextField jt = new JTextField("在这设置默认值");
不能设置默认值