【发布时间】:2016-01-15 15:48:46
【问题描述】:
我想创建一个JPasswordField,在那里我可以在打字时看到字符,
我尝试了passtxt.setEchoChar((char) 0);,但它完全将'*' 更改为文本
我不要这个,
我想在逐个字符输入的同时查看文本
(正如我们在移动浏览器中看到的那样)
谢谢
import java.awt.BorderLayout;
import java.awt.Checkbox;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Main {
public static void main(String args[]) {
JFrame f = new JFrame("JPasswordField ");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p=new JPanel();
p.add(new JLabel("Username"));
p.add(new JTextField(20));
p.add(new JLabel("Password"));
JPasswordField jpassword = new JPasswordField(20);
p.add(jpassword);
Checkbox c=new Checkbox("type password and click");
c.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
jpassword.setEchoChar('*');
} else {
jpassword.setEchoChar((char) 0);
}
}
});
jpassword.setEchoChar((char)0);
p.add(c);
f.add(p);
f.setSize(300, 200);
f.setVisible(true);
}
}
【问题讨论】:
-
请发布Runnable Example,我们可以复制粘贴并查看您的程序运行时遇到的问题与您看到的相同,它应该尽可能短,但要包含足够的代码,以便我们进行测试。这将导致更少的混乱,更多,更快和更好的答案:)
-
JPasswordField 没有这样的功能(因为它在 PC 环境中并不是真正需要的),但是您可以扩展该类并很快自己实现它...
-
如何扩展类来实现它
-
@vinaynegi 如果您不知道如何扩展类,请获取 Java 初学者书籍。这里真的不是像继承一样学习 Java 101 的地方。
-
您想在隐藏之前短暂显示角色吗?
标签: java swing jpasswordfield