-1

我是 java 新手,当密码错误时,我试图将 rdtnAdministrator.setenabled 设置为 false,但是当我这样做时,它会随之而来,请清楚地解释我做错了什么。

            public void mouseClicked(MouseEvent e) {
            char[] password = passwordField.getPassword();
            String passString = new String(password);
            if (passString.equalsIgnoreCase("Dave"))
            {
               System.out.println("Correct!");
               int loggedin = 1;
            }
            else
            {
                System.out.println("Wrong!");
                int loggedin = 0;
                rdbtnAdministrator.setEnabled(false); // rdbtnAdministrator cannot be resolved
            }



        }
    });
    btnNewButton.setBounds(148, 42, 139, 23);
    frame.getContentPane().setLayout(null);
    frame.getContentPane().add(loginkey);
    frame.getContentPane().add(btnNewButton);


    JRadioButton rdbtnAdministrator = new JRadioButton("Administrator");
    rdbtnAdministrator.setEnabled(false);
    rdbtnAdministrator.setBounds(386, 10, 109, 23);
    frame.getContentPane().add(rdbtnAdministrator);

我知道它是因为它在 mouseClicked 中,但我不知道如何修复它

4

2 回答 2

1

您似乎rdbtnAdministrator在本地上下文中声明,这意味着MouseListener不知道变量的含义......它超出了范围。

最好的解决方案是创建rdbtnAdministrator一个类实例变量,然后它将对类实例可用。

于 2013-09-02T01:51:24.383 回答
1

rdbtnAdministrator必须在事件处理程序的上下文中定义为可访问的。您没有粘贴足够的代码,但我认为这是一个匿名类。

The easiest fix would be to define rdbtnAdministrator as final and do so above the definition of the event handler. Alternatively you can define rdbtnAdministrator as an instance member; that is a class level variable instead of a local variable.

Please take the time to learn about this here.

于 2013-09-02T01:51:30.893 回答