public class MainFrame extends JFrame {
    MainFrame()
    {
        JButton zeroButton = new JButton("0");
        add(zeroButton);

        Handler handler = new Handler();
        zeroButton.addActionListener(handler);
    }

    private class Handler implements ActionListener
    {

        public void actionPerformed(ActionEvent e) {
              if (e.getSource() == **zeroButton**)
                  JOptionPane.showMessageDialog(null, "hello there!");
        }
    }
}


该代码有一个错误,强调了我在代码中标记为粗体的内容。
这是错误消息:“找不到符号”

我以为我可以从内部类访问外部类修饰符,但这是行不通的!

最佳答案

zeroButton不是外部类(MainFrame)的成员,它是MainFrame构造函数中的局部变量。

试试这个

public class MainFrame extends JFrame {
    private final JButton zeroButton;

    MainFrame() {
        zeroButton = new JButton("0");


PS我也不确定您是否应该将控件与==进行比较。 (从未使用过的秋千)

关于java - 无法访问外部类修饰符(java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3900480/

10-10 11:55