Java 对象方法不可访问

标签 java swing jpasswordfield

在下面的代码中,如果我调用password.setEchoCar(char)方法,文件运行正常。为什么在它上面创建对象时我无法调用它?

应该存在范围问题,我检查了 javadoc 的方法,它似乎是指定非默认密码字符的正确方法。

谢谢

import javax.swing.*;

public class Authenticator extends javax.swing.JFrame {

    JTextField username = new JTextField(15);
    JPasswordField password = new JPasswordField(15);
    password.setEchoChar('%');
    JTextArea comments = new JTextArea(4, 15);
    JButton ok = new JButton("OK");
    JButton cancel = new JButton("Cancel");

    public Authenticator () {
        super("Account Information");
        setSize(300, 220);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel pane = new JPanel();
        JLabel usernameLabel= new JLabel("Username: ");
        JLabel passwordLabel = new JLabel("Password: ");
        JLabel commentsLabel = new JLabel("Comments: ");
        comments.setLineWrap(true);
        comments.setWrapStyleWord(true);
        pane.add(usernameLabel);
        pane.add(username);
        pane.add(passwordLabel);
        pane.add(password);
        pane.add(commentsLabel);
        pane.add(comments);
        pane.add(ok);
        pane.add(cancel);
        add(pane);
        setVisible(true);
    }

    private static void setLookAndFeel() {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Exception exc) {
            System.out.println(exc.getMessage());
        }
    }

    public static void main(String[] arguments) {
        Authenticator.setLookAndFeel();
        Authenticator auth = new Authenticator();
    }
}

最佳答案

您正在尝试在可执行上下文之外执行代码(在变量减速区域内)...

public class Authenticator extends javax.swing.JFrame {

    JTextField username = new JTextField(15);
    JPasswordField password = new JPasswordField(15);
    password.setEchoChar('%');
    //...

    public Authenticator () {
        //...

password.setEchoChar('%'); 移至构造函数

public class Authenticator extends javax.swing.JFrame {

    JTextField username = new JTextField(15);
    JPasswordField password = new JPasswordField(15);
    //...

    public Authenticator () {
        super("Account Information");
        password.setEchoChar('%');
        //...

关于Java 对象方法不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536199/

相关文章:

java - 从 JAR/Lib 启动 Activity

java - JPasswordField.getPassword() 仍然不安全?

java - 如何将 JPasswordField 中的文本剪切/复制为字符数组?

java - 如何使用swing清空java中的密码字段值(字符串)

java - Java中将输入作为字符串并限制用户不能输入整数

java - 二维数组行列长度

java - jvm 在使用 jni 从 java 类读取 arraylist 时崩溃

java - Swing Timer 和 ActionEvents 的问题

java - 从线程更新 JFreeChart

java - Java Swing 过时了吗?