;使用鼠标侦听器时预期



我试图在用户将鼠标悬停在某物上时显示边框,但是当我使用paint Method时。它说

Syntax Error on Token "(" ; expected and 
Syntax Error on Token ")" ; expected

我的代码是:

JLabel lblAllOrNothing = new JLabel("All Or Nothing (4 BP)");
lblAllOrNothing.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseEntered(MouseEvent arg0) {
        public void paint(Graphics g) { //Error is this line
            g.drawRect(0, 72, 256, 72);
        }
    }
});              

只是不知道我还能在哪里放一个半科伦。我是GUI编程的新手,所以我希望我没有犯太糟糕的错误。谢谢!

你不能在java中嵌套两个方法:

public void mouseEntered(MouseEvent arg0) {
            public void paint(Graphics g) { //Method inside a method is not allowed
  • 你不能从AWT/Swing Listener调用paint()

  • 此方法
  • 通过为容器重写此方法自动调用

  • 覆盖 paintComponent for JPanel 而不是 paint()

你有语法问题。

JLabel lblAllOrNothing = new JLabel("All Or Nothing (4 BP)");
lblAllOrNothing.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseEntered(MouseEvent arg0) {
        // You can't define a method inside a method!!
    }
});

顺便说一下,要在 Swing 中进行自定义绘画,您应该覆盖paintComponent而不是 paint .阅读更多 在AWT和Swing中绘画

不能在 mouseEnter 方法中嵌套绘制方法;也许您只是想要

JLabel lblAllOrNothing = new JLabel("All Or Nothing (4 BP)");
lblAllOrNothing.addMouseListener(new java.awt.event.MouseAdapter() {
  @Override
  public void mouseEntered(MouseEvent e) {
    // public void paint(Graphics g) { 
    // g.drawRect(0, 72, 256, 72); }
    java.awt.Component c = e.getComponent();
    c.getGraphics().drawRect(0, 72, 256, 72);
  }
});
你不能在

Java 中将一个方法放入另一个方法中,使 draw 方法退出侦听器你应该做的只是在侦听器方法中调用 draw 方法:

这个

new MouseAdapter() {
    @Override
    public void mouseEntered(MouseEvent arg0) {
        // You can't define a method inside a method!!
    }
};

是一个匿名类。现在,当您将其用作语句时,它将用作 };,并返回一个对象,而当您将其用作传递对象作为参数时,将使用它作为

fun(new MouseAdapter() {
    @Override
    public void mouseEntered(MouseEvent arg0) {
        // You can't define a method inside a method!!
    }
});

在 Java 中,方法中不能有方法。

相反,请执行此操作

JLabel lblAllOrNothing = new JLabel("All Or Nothing (4 BP)");
    lblAllOrNothing.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseEntered(MouseEvent arg0) {
            //call the paint method here
        }
        //Move this method here
        public void paint(Graphics g) { //Error is this line
            g.drawRect(0, 72, 256, 72);
        }
    });

请注意,这实际上在功能上不起作用,但它说明了为什么您会收到语法错误

相关内容

  • 没有找到相关文章

最新更新