java - 找不到符号错误。 java

标签 java actionlistener mouselistener

我正在运行以下代码,但在 resultPane.setResult(0); 处出现找不到符号错误我是否将新的处理程序类放在了错误的位置?我试过放 它在不同的地方,但没有

public class MovingLabel {

public static void main(String[] args) {
    new MovingLabel();
}
public MovingLabel() {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
            }

            ResultPane resultPane = new ResultPane();

            JFrame frame = new JFrame("Testing");
            frame.setGlassPane(resultPane);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BorderLayout());
            frame.add(new NewPane(resultPane));
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.setBounds(500,300,200,200);
        }
    });
}
public class ResultPane extends JPanel {
     private JLabel result;
    private Timer timer;

    private int xDelta = (Math.random() > 0.5) ? 1 : -1;
    private int yDelta = (Math.random() > 0.5) ? 1 : -1;



    public ResultPane() {
        setOpaque(false);
        setLayout(null);
        result = new JLabel();
        Font font = result.getFont();
        font = font.deriveFont(Font.BOLD, 26f);
        result.setFont(font);
        add(result);
        HandlerClass handler = new HandlerClass();
        result.addMouseListener(handler);
        result.addMouseMotionListener(handler);
        timer = new Timer(40, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Point point = result.getLocation();
                point.x += xDelta;
                point.y += yDelta;
                if (point.x < 0) {
                    point.x = 0;
                    xDelta *= -1;
                } else if (point.x + result.getWidth() > getWidth()) {
                    point.x = getWidth() - result.getWidth();
                    xDelta *= -1;
                }
                if (point.y < 0) {
                    point.y = 0;
                    yDelta *= -1;
                } else if (point.y + result.getHeight() > getHeight()) {
                    point.y = getHeight() - result.getHeight();
                    yDelta *= -1;
                }
                result.setLocation(point);
                repaint();
            }

        });
        timer.start();

    }


    public void setResult(Number number) {
        result.setText(NumberFormat.getNumberInstance().format(number));
        result.setSize(result.getPreferredSize());
        setVisible(true);
    }
}
public class NewPane extends JPanel {
    private final ResultPane resultPane;

    public NewPane(ResultPane resultPane) {

        setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        this.resultPane = resultPane;

        JPanel buttons = new JPanel();
        buttons.add(new JButton(new LabelAction()));

        add(buttons, gbc);

    }
    public class LabelAction extends AbstractAction {
        LabelAction() {
            putValue(NAME, "Label");
        }

        @Override
         public void actionPerformed(ActionEvent e) {
            resultPane.setResult(123);
         }
    }

}
private class HandlerClass implements MouseListener, MouseMotionListener {
        public void mouseClicked(MouseEvent event) {
            resultPane.setResult(0);
        }
        public void mouseReleased(MouseEvent event) {
        }
        public void mousePressed(MouseEvent event) {
        }
        public void mouseExited(MouseEvent event) {
        }
        public void mouseEntered(MouseEvent event) {
        }
        public void mouseMoved(MouseEvent event) {
        }
        public void mouseDragged(MouseEvent event){
        }
    }

}

最佳答案

resultPane 只定义在run() 的范围内。如果您希望 HandlerClass 能够访问它,您需要给它一个定义。

关于java - 找不到符号错误。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747620/

相关文章:

java - JTable 行的 ActionListener

java - JComboBox的ActionListener并初始化JPanel

java - 将变量传递到 Java ActionListener 中?

java - 图形点击界面

资源文件夹中的java spring图像不可用(404错误)

java - WildFly - 来自远程客户端的 EJB 调用 - 操作失败,状态为 WAITING

java - 我在 GUI 中实现鼠标操作监听器时遇到问题

java - 使用鼠标点击找到最近的点对

java - 处理两个数组列表之间的差异

java - 这个 Java 模式叫什么?