Jython中输入框中的掩码密码

时间:2014-08-04 18:52:55

标签: python swing input jython masking

我正在使用Jython并尝试让用户输入密码。但是,我希望它显示一个星号而不是用户输入的字符。我设法使用getpass做类似的事情,但它要求你输入cmd行,它不会显示任何东西而不是星号。

我希望将用户输入到对话框中; "输入()"命令会打开一个完美的盒子。例如,这个:

import sys

password = input("Please enter your password: ")
if password == None:     #if the user hits cancel
    sys.exit(0)

但是,它不会掩盖文本。我可以使用jython的java方面这样做:

import javax.swing.JOptionPane as JOP
import javax.swing.JPasswordField as JPF
import sys

pwdF = JPF()
choice = JOP.showConfirmDialog(None, pwdF,
    "Please enter your password:",
    JOP.OK_CANCEL_OPTION)

if choice == JOP.CANCEL_OPTION:
    sys.exit(0)
password = pwdF.getText()

我遇到的一个问题是我无法将光标默认为文本字段(而是从ok按钮开始)。但首先,我想要采用更加抒情的方式来做这件事。

我使用java.swing,使用布局和添加组件搞砸了很多;但是,我没有理解它足以以一种可行的方式调整它。

有没有人知道创建一个带有蒙版文本的输入框的方法与我发布的java版本不同?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用javax.swing.JPasswordField类。 一个例子是:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

public class PwdForm extends JFrame {
    public JFrame frame;

    public PwdForm() {

        //Create main Panel 
        JPanel mainPanel = new JPanel();

        //Password field
        JLabel lblPwd = new JLabel("Password :");
        mainPanel.add(lblPwd);
        final JPasswordField txtPwd = new JPasswordField(20);
        lblPwd.setLabelFor(txtPwd);
        mainPanel.add(txtPwd);

         //Confirm Button
         final JButton btnOk = new JButton("Confirm");
         mainPanel.add(btnOk);

         //Create and set up the window.
         frame = new JFrame("Password Example");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         //Set up the content pane.
         mainPanel.setOpaque(true);  //content panes must be opaque
         frame.setContentPane(mainPanel);

        //Display the window.
        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
         PwdForm lf = new PwdForm();    
    }
}