Java 无法解析方法addPaintListener

Java 无法解析方法addPaintListener,java,canvas,methods,resolve,Java,Canvas,Methods,Resolve,我试图通过在主文件中添加addPaintListener函数在画布上绘制,如下所示,但我得到一个错误“无法解析方法”addPaintListener(eos.listeners.PaintListener) 使用我们的PaintListener的画布。此画布与官方Java.AWT.canvas类的代码相同 我们在画布上添加了一个缓冲区,以便在上面进行绘制,并添加了一个PaintListener属性: 添加了将PaintListeners添加到画布的函数 import package eos

我试图通过在主文件中添加addPaintListener函数在画布上绘制,如下所示,但我得到一个错误“无法解析方法”addPaintListener(eos.listeners.PaintListener)

使用我们的PaintListener的画布。此画布与官方Java.AWT.canvas类的代码相同

我们在画布上添加了一个缓冲区,以便在上面进行绘制,并添加了一个PaintListener属性:

添加了将PaintListeners添加到画布的函数

import    package eos;

import eos.listeners.PaintListener;
import eos.utility.Util;
import javax.swing.*;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;


public class Main {
private static JLabel splash = new JLabel(Util.loadIcon("http://www.runescape.com/img/game/splash.gif"));

private static void displayFrame(String world, int width, int height) {
    JFrame frame = new JFrame("Eos");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);

    if (splash != null) {
        frame.add(splash);
        frame.pack();
        frame.setVisible(true);
    }

    centerFrame(frame);

    ClientApplet applet = new ClientApplet(world, width, height);
    frame.add(applet);
    applet.start();
    if (splash != null) {
        frame.remove(splash);
    }
    frame.revalidate();
    frame.pack();

    centerFrame(frame);

    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            frame.setVisible(false);
            applet.stop();
            frame.dispose();
            super.windowClosed(e);
        }
    });
}


private static void centerFrame(JFrame frame) {
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    int cX = (toolkit.getScreenSize().width / 2) - (frame.getWidth() / 2);
    int cY = (toolkit.getScreenSize().height / 2) - (frame.getHeight() / 2);
    frame.setMinimumSize(frame.getSize());
    frame.setLocation(cX, cY);
    frame.setVisible(true);
    frame.setResizable(true);
}

public static void notifyCanvasReady(Canvas canvas) {
    canvas.addPaintListener((PaintListener) g -> {
        g.setColor(Color.white);
        g.drawString("HELLO WORLD", 50, 50);




    });
}

public static void main(String[] args) {
    displayFrame("http://runescape.com", 800, 600);
}
}

也许问题在于您在Main中调用此方法的方式。尝试以下方法:

public static void notifyCanvasReady(Canvas canvas) {
    canvas.addPaintListener(new PaintListener() {
        @Override
        public void onPaint(Graphics g) {
            g.setColor(Color.white);
            g.drawString("HELLO WORLD", 50, 50);            
        }
    });
}

嗨,我用你的代码替换了原来的代码,我得到了这个错误。”错误:(67,15)java:找不到symbol symbol:方法addPaintListener()位置:java.awt.canvas类型的变量canvas'然后可能存在导入组织和顺序问题。
 package eos.listeners;

import java.awt.*;
import java.util.EventListener;




public interface PaintListener extends EventListener {
public void onPaint(Graphics g);
}
public static void notifyCanvasReady(Canvas canvas) {
    canvas.addPaintListener(new PaintListener() {
        @Override
        public void onPaint(Graphics g) {
            g.setColor(Color.white);
            g.drawString("HELLO WORLD", 50, 50);            
        }
    });
}