我正在用Java开发一个系统(使用NetBeans),为了使它更加“专业”,我添加了一些很酷的函数,比如占位符(是的,我知道,它来自于)。
对于所有的 JTextField ,我使用了以下代码来生成它们的占位符(本例中JTextField的名称是"tfUser"):
private void tfUserFocusGained(java.awt.event.FocusEvent evt) {
if (tfUser.getText().equals("Your User Name...")) {
tfUser.setText("");
tfUser.setForeground(Color.BLACK);
}
}
private void tfUserFocusLost(java.awt.event.FocusEvent evt) {
if (tfUser.getText().equals("")) {
tfUser.setText("Your User Name...");
tfUser.setForeground(Color.GRAY);
}
}这是一个“焦点匹配”:文本字段最初有文本“您的用户名.”,具有“灰色”前景。每当这个文本字段获得焦点时,它都会验证它的文本:如果text.equals(“您的用户名.”),它的文本被设置为"“(一个空字符串),前台设置为黑色(默认)。另一方面,如果text.equals(“任何其他的.”),这意味着用户可能已经插入用户名,所以,不要对此代码做任何事情。
每次文本字段失去焦点时,它都会验证其文本:如果text.equals("") (又是一个空字符串)将其文本设置为“您的用户名.”前景被设置为灰色。同样,如果text.equals(“任何其他的.”),这意味着用户可能已经插入了用户名,因此,不要对此代码做任何事情。
这段代码在JTextFields 但是中运行得很好,当我对JTextFields做同样的操作时,我得到以下结果:
**************** (应该是“你的密码.”)
有人能帮我在这个JPasswordField中添加一个占位符吗?提前谢谢。
发布于 2021-04-22 14:59:50
我在登录代码中添加了一个“显示密码”的复选框,并在jframe中添加了以下语句:
//Setting checkbox selected to true so the word "password" is seen when program runs
passCheckBox.setSelected(true);
if(passCheckBox.isSelected())
{
PasswordField.setEchoChar((char)0);
}`密码代码复选框:
if(passCheckBox.isSelected())
{
PasswordField.setEchoChar((char)0);
}else{
PasswordField.setEchoChar('*');
}获得密码字段焦点代码:
private void PasswordFieldFocusGained(java.awt.event.FocusEvent evt) {
passCheckBox.setSelected(false);
PasswordField.setEchoChar('*');
String password = String.valueOf(PasswordField.getPassword());
if(password.toLowerCase().equals("password"))
{
PasswordField.setText("");
PasswordField.setForeground(Color.black);
}
} 密码字段焦点丢失代码:
private void PasswordFieldFocusLost(java.awt.event.FocusEvent evt) {
String password = String.valueOf(PasswordField.getPassword());
if(password.toLowerCase().equals("password") || password.toLowerCase().equals("") )
{
PasswordField.setText("Password");
PasswordField.setEchoChar((char)0);
PasswordField.setForeground(new Color(153, 153, 153));
}
} 我自己做了一半的工作,并从视频中取了一些片段,我希望这能帮助:>
发布于 2022-05-05 04:15:33
下面是我获取占位符的方法
private void getPlaceholders(JTextField text) {
String temp = text.getText();
text.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
text.setText("");
text.setForeground(Color.BLACK);
}
@Override
public void focusLost(FocusEvent e) {
if (text.getText().isEmpty()) {
text.setForeground(Color.GRAY);
text.setText(temp);
}
}
});
}下面是我实现它的方法。
// Password Field
passwordField = new JPasswordField();
passwordField.setBounds(48, 340, 288, 32);
roundedPanel.add(passwordField);
passwordField.setText("Password");
passwordField.setEchoChar((char) 0);
getPlaceholders(passwordField);允许您在passwordFields中看到占位符的是
passwordField.setEchoChar((char) 0);
您可以将其取出用于常规文本字段。
https://stackoverflow.com/questions/45269543
复制相似问题