标签: jpasswordfield

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

我从来没有想过,只有我使用getPassword返回字符数组的方法,我看到该getText方法已被弃用.但是现在我想,为什么这种方法被弃用了

Java文档说明:

不推荐.从Java 2平台v1.2开始,取而代之getPassword.

获取组件表示的部分文本.如果length为0,则返回空字符串.

出于安全原因,不推荐使用此方法.请改用该getPassword方法.

但那些安全原因是什么?有关于此的任何想法?

先感谢您.

java swing jpasswordfield

29
推荐指数
4
解决办法
5万
查看次数

渲染Java JPasswordField?

我试图找到实际呈现JPassword字段的方法.也许渲染不是正确的词,所以这是交易:

我试图让JPassword字段显示不同数量的字符,而不是与我输入的实际密码长度相同.例如,如果我输入密码123456和setEchoChar((字符)值)为"#"

密码将显示如下:######
我希望能够生成随机数量的星星以显示:##########
如果数字为10,例如.(当然没有空格)

我能够通过添加几个侦听器来检测更改,然后获取文本并用我创建的掩码替换它,但这不能令人满意,我希望能够改变实际对象的行为.一点挑战不会伤害,对吗?:)我准备好任何建议.谢谢.

java swing jpasswordfield

6
推荐指数
1
解决办法
785
查看次数

JPasswordField KeyPress字符串长度错误?

我试图在Java Swing(Netbeans)中更改JPasswordField的背景颜色.

这就是我所拥有的:

private void pstxtPasswordKeyPressed(java.awt.event.KeyEvent evt) {                                         

    //Get string from password box
    userPassword = new String(pstxtPassword.getPassword());

    //If password is 8+ characters
    //(one less because string counting begins at 0)
    if (userPassword.length() >= 7) {

        //Set password input box background color to green
        pstxtPassword.setBackground(Color.green);
    }

    else { //If password is less than 8 characters

        //Set password input box background color to red
        pstxtPassword.setBackground(Color.red);
    }

}
Run Code Online (Sandbox Code Playgroud)

一切正常,除非我退格.键入8个以上字符后退格时,颜色不会变回红色,直到字段中只剩下5个字符.

帮助将不胜感激,我是java编程和Netbeans的新手.

编辑:我改变了我的代码,

    //If password is 8+ characters
    if ((pstxtPassword.getPassword()).length >= 8) {

        //Set password …
Run Code Online (Sandbox Code Playgroud)

java swing netbeans string-length jpasswordfield

6
推荐指数
3
解决办法
1898
查看次数

带动作命令的JPasswordField安全性

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

java security swing jpasswordfield

6
推荐指数
1
解决办法
295
查看次数

如何在JPasswordField中启用剪切,复制?

我注意到我无法剪切和复制JPasswordField?现在如何将选定的密码部分复制/剪切到剪贴板?有没有办法做到这一点?

java swing jpasswordfield

6
推荐指数
1
解决办法
925
查看次数

如何为此密码字段提供焦点?

这可能看起来微不足道,但我无法弄清楚如何在此对话框焦点中给出密码框.

import javax.swing.JOptionPane;
import javax.swing.JPasswordField;

public class PasswordBox {
    @SuppressWarnings("unused")
    public String prompt() {
        JPasswordField pass = new JPasswordField(10);
        int action = JOptionPane.showConfirmDialog(null, pass,"Enter Password",JOptionPane.OK_CANCEL_OPTION); 
        return new String(pass.getPassword());
    }
}
Run Code Online (Sandbox Code Playgroud)

我从其他类调用它: String tmpPASS = new PasswordBox().prompt();

出于某种原因,当对话框出现时,"确定"按钮会获得焦点.

stacktrace(参见Eng.Fouad的回答):

at javax.swing.JComponent.addNotify(Unknown Source)
at PasswordBox$1.addNotify(PasswordBox.java:14)
at java.awt.Container.addNotify(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

java passwords swing joptionpane jpasswordfield

5
推荐指数
1
解决办法
5610
查看次数

JPasswordField.getPassword() 的安全原因是什么?

自 Java 1.2 以来,JPasswordField.getText()“出于安全原因”已被弃用,鼓励使用getPassword()“为了更安全”的方法。

但是,JPasswordField通过分析堆转储 ( JPasswordField instance -> model -> s -> array) ,我至少能够获得存储在 Oracle JRE 1.7 中的密码。

那么如何JPasswordField.getPassword()帮助保护密码呢?

java security passwords swing jpasswordfield

5
推荐指数
1
解决办法
1353
查看次数

JPasswordField编码输入

Java JPasswordField正在编码用户在密码字段中输入的输入,我不想要它.我正在检查密码数据库值是纯数字值.

输入密码的数值为

12345 
Run Code Online (Sandbox Code Playgroud)

然后它回来了

[C@1e9b48b
Run Code Online (Sandbox Code Playgroud)

java swing jpasswordfield

5
推荐指数
1
解决办法
1559
查看次数

如何在JTable中创建用于输入密码的列单元格

我正在 JTable 中创建一个密码列。

我可以使用以下代码将单元格编辑器更改为密码编辑器:

JPasswordField pwf = new JPasswordField();
    DefaultCellEditor editor = new DefaultCellEditor(pwf);
    jTable1.getColumnModel().getColumn(3).setCellEditor(editor);
Run Code Online (Sandbox Code Playgroud)

我无法找出正确的解决方案来使用与 JPassword 控件相同的行为来渲染密码字段内容。默认情况下,它渲染输入的文本并显示它。如何覆盖它,以便渲染器仅渲染显示与输入的密码长度相同的“*”或黑点。

谢谢,钱德拉

更新 1:目前我正在使用下面给出的密码字段渲染器:

class PasswordCellRenderer extends JPasswordField
implements TableCellRenderer {

    public PasswordCellRenderer() {
        super();
        // This displays astericks in fields since it is a password.
        // It does not affect the actual value of the cell.
        this.setText("filler123");
    }

    public Component getTableCellRendererComponent(
    JTable arg0,
    Object arg1,
    boolean arg2,
    boolean arg3,
    int arg4,
    int arg5) {
        return this;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用以下命令调用上面的渲染器:

jTableJDBCPools.getColumnModel().getColumn(3).setCellRenderer(new PasswordCellRenderer());
Run Code Online (Sandbox Code Playgroud)

即使密码字段为空,此渲染器也会进行屏蔽。因此,用户很难确定密码单元格是空的还是已填充的(因为它总是显示一些隐藏的内容)。 …

swing jtable jpasswordfield

4
推荐指数
1
解决办法
4831
查看次数

使用编辑器验证表的单元格

我的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 InputMethodListener() {

            @Override
            public void inputMethodTextChanged(InputMethodEvent event)
            {
                // TODO Auto-generated method stub

            }

            @Override
            public void caretPositionChanged(InputMethodEvent event)
            {
                // TODO Auto-generated method stub

            }
        })
        this.m_passWord.addFocusListener(new FocusListener() …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecelleditor jpasswordfield

4
推荐指数
2
解决办法
5201
查看次数