当前位置: 首页 > 面试题库 >

JPasswordField可以替代吗?

梁浩
2023-03-14
问题内容

键入密码短语时

yeast bulk seize is shows pain

每个人都能听到敲击空格键的声音,因此在密码字段中显示空格也很合逻辑。所以我想要一些可以显示的东西

***** **** ***** ** ***** ****

代替

******************************

这将使键入更加容易,同时几乎不降低安全性。

更新

更新Riduidel的评论之前请三思。当布鲁斯·施耐尔(Bruce
Schneier)写

“是时候以明文形式显示大多数密码了”时 ,那么显示其中的一小部分也必须是正确的。尤其是显示仅通过聆听即可捕获的部分。


问题答案:

这是一种变体,用于setEchoChar()使密码在预定的时间内可见:例如三秒钟。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.Timer;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

/** @see http://stackoverflow.com/questions/5339702 */
public class PasswordTest {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGui();
            }
        });
    }

    private static void createAndShowGui() {
        JFrame jf = new JFrame("Test Password");
        JPasswordField jpwd = new JPasswordField();
        TimedPasswordListener tpl = new TimedPasswordListener(jpwd);
        jpwd.getDocument().addDocumentListener(tpl);
        jf.add(jpwd);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setLocationRelativeTo(null);
        jf.pack();
        jf.setVisible(true);
    }
}

class TimedPasswordListener implements DocumentListener, ActionListener {

    private Timer timer = new Timer(3000, this);
    private char echoChar;
    private JPasswordField pwf;

    public TimedPasswordListener(JPasswordField jp) {
        pwf = jp;
        timer.setRepeats(false);
    }

    public void insertUpdate(DocumentEvent e) {
        showText(e);
    }

    public void removeUpdate(DocumentEvent e) {
        showText(e);
    }

    public void changedUpdate(DocumentEvent e) {}

    public void showText(DocumentEvent e) {
        if (0 != pwf.getEchoChar()) {
            echoChar = pwf.getEchoChar();
        }
        pwf.setEchoChar((char) 0);
        timer.restart();
    }

    public void actionPerformed(ActionEvent e) {
        pwf.setEchoChar(echoChar);
    }
}


 类似资料:
  • 问题内容: 在Java中,您可以创建一个仅包含抽象方法的抽象类。另一方面,您可以创建一个声明相同方法的接口。在这种情况下,可以使用抽象类代替接口吗? 问题答案: 不总是: 一堂课只能延伸 一 堂课 一个类可以实现 多个 接口 Sun文档 进行了更详细的比较: 抽象类与接口 与接口不同,抽象类可以包含非静态和最终字段,并且可以包含已实现的方法。此类抽象类与接口相似,不同之处在于它们提供了部分实现,将

  • 问题内容: 我对此事有点困惑。我正在设计一个ORM类,它的行为与ActiveRecord在ruby on rails中的行为非常相似,但这并不重要。 我要说的是,我的类广泛使用了静态属性继承,特别是用于数据库和表处理。我的问题是,我是否应该使用self ::? 问题答案: 您必须问自己:“我要使用适当的方法来解决问题吗?” 并做两件事。例如或是对当前类的引用,因此在一定范围内进行定义将无法满足对静

  • 问题内容: 我想知道与MySQL中一样的TOP关键字的替代方法。我已经阅读了有关SQL Server中的TOP的信息。 在MySQL中,是否还有其他替代方法,或者在MySQL中,我们可以从中获得相同功能的任何其他方法? 问题答案: 排序和限制结果:

  • 问题内容: 由于Spring能够像EJB一样使用事务。对我来说,Spring能够代替使用EJB的需求。谁能告诉我使用EJB的其他优点是什么? 问题答案: Spring从一开始就被开发为EJB的替代品,因此答案当然是您可以使用Spring代替EJB。 如果说使用EJB有“优势”,我想这将取决于您团队的技能。如果您没有Spring专业知识,并且拥有丰富的EJB经验,那么坚持使用EJB 3.0是一个不错

  • 问题内容: 我正在使用 EclipseLink的JAXB实现的一些非标准扩展,并且要启用该实现,必须使用jaxb.properties对其进行配置。效果很好。 但是,由于生成错误,属性文件未包含在正确的位置,从而导致使用默认的JAXB,该文件没有任何错误,只是继续解析XML文件,忽略了非标准扩展名,给我留下了一个非工作bean。 为了使它更加健壮,我想摆脱属性文件,并在代码中指定上下文配置。由于它

  • 本文向大家介绍它们可以替代HTML5 iframe srcdoc吗?,包括了它们可以替代HTML5 iframe srcdoc吗?的使用技巧和注意事项,需要的朋友参考一下 srcdoc属性指定要在iframe中显示的页面的HTML内容。HTML <iframe>标记用于创建嵌入式框架。 srcdoc 属性的替代方法是: