Tag: jpasswordfield

以编程方式填充JPasswordField而不创建String对象

有没有一种简单的方法来填充JPasswordField的文档而不创建包含密码的String对象? 我试图创建一个“更改密码”对话框,该对话框接收旧密码并要求输入新密码两次(三个密码字段),其中旧密码可以事先知道,具体取决于用户配置的方式(密码可能已存储)。 因此,每次向她显示相关对话框时,不要求用户输入现有密码,我想以编程方式填写它。 请注意, JPasswordField.setText(String)和String构造函数不是一个选项。 我想用char数组做这个。 我一直试图滥用似乎由PlainDocument使用的PlainDocument ,但它似乎不起作用(字符在那里,但字段已损坏): import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JFrame; import javax.swing.JPasswordField; import javax.swing.text.PlainDocument; import javax.swing.SwingUtilities; import javax.swing.text.GapContent; public class FillJPasswordField extends JFrame { private JPasswordField pass; public FillJPasswordField() { setLayout(new GridBagLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); char[] password = new char[]{‘p’, ‘a’, ‘s’, ‘s’, ‘w’, ‘o’, ‘r’, ‘d’}; PlainDocument doc = new […]

在JPasswordField中显示密码,而不是将0设置为echo char

如何显示JPasswordField的文本而不是将0设置为echo char? Java Docs说: 将值设置为0表示您希望在键入文本时看到该文本,类似于标准JTextField的行为。 以下结果导致不兼容的类型错误 outField.setEchoChar(0); wheras outField.setEchoChar(‘0’); 只需将0设置为echo char(每个数字显示0)。 在JTextField上使用JPasswordField的原因是我想更改echo char并使用其他方法隐藏密码。 谢谢!

带动作命令的JPasswordField安全性

我在我的程序中使用JPasswordField 。 当我问getPassword() ,我得到一个char[]数组。 但是当我向JPasswordField添加ActionListener并询问getActionCommand() ,我将密码作为String 。 此密码是否在事件对象中保存为String ? 这不是一个安全问题吗?

使用编辑器validation表的单元格

我的JTable有一个密码字段编辑器。 我想在用户单击编辑另一个字段时,如果文本长度小于8位,则显示错误消息。 我尝试过焦点听众。 但它不起作用。 请帮助我,因为我刚刚开始使用java swing。 class PasswordEditor extends DefaultCellEditor { TextBox m_passWord = new TextBox(); public PasswordEditor() { super(new TextBox()); } @Override public Object getCellEditorValue() { return this.m_passWord.getText(); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { Object fieldValue = value; if(null == fieldValue) fieldValue = Constants.EMPTY_STRING; this.m_passWord.addInputMethodListener(new […]

getText()vs getPassword()

我目前正在为一家虚拟公司设计一个登录系统,现在我所拥有的只是主要登录,需要大量的清理工作。 下面是我的登录处理程序。 private class LoginButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { if(_uid.getText().equalsIgnoreCase(“Nathan”) && _pwd.getText().equals(“password”)) { JOptionPane.showMessageDialog(null, “Congratulations on logging in!”); } else { JOptionPane.showMessageDialog(null, “Error on login!”); } } } 原样,这完全没问题,但是当我改成它时 _pwd.getPassword.equals(“password”) 当一切输入正确时,它会直接指向else语句。 这有什么不对? 完整的程序如下。 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main extends JFrame { private static final int HEIGHT = […]

为什么不推荐使用JPasswordField中的getText()?

我之前从未想过,只是我使用了返回字符数组的方法getPassword ,并且我已经看到了不推荐使用 getText方法。 但是现在我想,为什么这种方法被弃用了 ? Java文档说明: 不推荐 。 从Java 2平台v1.2开始,由getPassword取代。 获取组件表示的部分文本。 如果length为0,则返回空字符串。 出于安全原因,不推荐使用此方法。 请改用getPassword方法。 但那些安全原因是什么? 关于这个的任何想法? 先谢谢你。