gpt4 book ai didi

java - JPasswordField如何设置密码

转载 作者:行者123 更新时间:2023-12-01 18:58:04 25 4
gpt4 key购买 nike

您好,我正在使用JPasswordField,当我想读取它时,getPassword没有问题,但我正在做的是,当未设置密码时,它会显示InputDialog 您可以在其中输入密码,然后它应该将密码设置到 JPasswordField 但当我使用 setText 时它不会设置它并且没有方法setPassword()。所以我的问题是如何为 JPasswordField 设置密码?

String password = "";
JPasswordField passwordField = new JPasswordField();
passwordField.setEchoChar('*');
Object[] obj = {"Bitte ihr PAsswort eingeben:\n\n", passwordField};
Object stringArray[] = {"OK","Cancel"};

if (JOptionPane.showOptionDialog(null, obj, "Passwort", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, stringArray, obj) == JOptionPane.WARNING_MESSAGE)
{
password = new String(passwordField.getPassword());
}

txtFtpUser.setText(username);
panel_1.remove(txtFtpPassword);
txtFtpPassword = new JPasswordField(password);
txtFtpPassword.setBounds(10, 113, 206, 23);
panel_1.add(txtFtpPassword);

最佳答案

您声称 setText 对于 JPasswordField 来说不起作用是不正确的。请参阅以下代码,它按预期工作:

  public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
JFrame testFrame = new JFrame( "Test" );
JPasswordField field = new JPasswordField( );
field.setColumns( 20 );
field.setText( "Password" );
testFrame.add( field );
testFrame.pack();
testFrame.setVisible( true );
testFrame.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
}
} );
}

在构造函数中传递文本的变体(就像在代码中所做的那样)也可以按预期工作。

所以我会朝另一个方向寻找。以下部分

txtFtpUser.setText(username);
panel_1.remove(txtFtpPassword);
txtFtpPassword = new JPasswordField(password);
txtFtpPassword.setBounds(10, 113, 206, 23);
panel_1.add(txtFtpPassword);

让我想知道您是否在 UI 中看到了新的 JPasswordField。当您从 Container 添加/删除组件时,您需要使布局无效,如 Container#add 中所述。和 Container#remove方法。

注意:以字符串形式传递密码时请注意安全问题。但根据您的评论,您已经意识到了这一点。

关于java - JPasswordField如何设置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13306689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com