在Swing中怎样设置JTextField的默认显示值

2024年11月18日 10:25
有4个网友回答
网友(1):

可以靠焦点得失之后,进行判定,如果为空字符串,就显示默认值
代码:

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!";

}

网友(2):

JTextField(int columns)
构造一个具有指定列数的新的空 TextField。
JTextField(String text)
构造一个用指定文本初始化的新 TextField。
JTextField(String text, int columns)
构造一个用指定文本和列初始化的新 TextField。

上面是常用的构造方法,多多看看帮助文本吧。
JTextField jtf = new JTextField("默认值");

网友(3):

其实很简单
JTextField jt = new JTextField("在这设置默认值");

网友(4):

不能设置默认值