Je suis en train de tirer sur la toile en ajoutant la fonction de addPaintListeners dans le fichier principal comme suit, mais je reçois une erreur « ne peut pas résoudre la méthode » addPaintListener (eos.listeners.PaintListener)cannnot résoudre méthode addPaintListener
Toile utilisant notre PaintListener. Ce canevas est le même que celui de la classe Official Java.AWT.Canvas.
Nous avons ajouter un tampon sur la toile afin que nous puissions tirer parti de et nous avons ajouté une propriété PaintListener:
a ajouté une fonction à addPaintListeners sur la toile
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);
}
}
package java.awt;
import eos.Main;
import eos.listeners.PaintListener;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.peer.CanvasPeer;
public class Canvas extends Component implements Accessible {
private static final long serialVersionUID = -2284879212465893870L;
private static int nameCounter = 0;
private static final String base = "canvas";
private BufferedImage debugImage;
private transient PaintListener paintListener;
public Canvas() {
Main.notifyCanvasReady(this);
}
public Canvas(GraphicsConfiguration config) {
this();
setGraphicsConfiguration(config);
}
public void addPaintListener(PaintListener listener) {
paintListener = (PaintListener)AWTEventMulticaster.addInternal(paintListener, listener);
}
@Override
public Graphics getGraphics() {
if (debugImage == null || debugImage.getWidth() != getWidth() || debugImage.getHeight() != getHeight()) {
debugImage = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
}
Graphics g = debugImage.getGraphics();
if (paintListener != null) {
paintListener.onPaint(g);
}
super.getGraphics().drawImage(debugImage, 0, 0, null);
return g;
}
@Override
public void setVisible(boolean visible) {
super.setVisible(visible);
}
@Override
void setGraphicsConfiguration(GraphicsConfiguration gc) {
synchronized(getTreeLock()) {
CanvasPeer peer = (CanvasPeer)getPeer();
if (peer != null) {
gc = peer.getAppropriateGraphicsConfiguration(gc);
}
super.setGraphicsConfiguration(gc);
}
}
@Override
String constructComponentName() {
synchronized (Canvas.class) {
return base + nameCounter++;
}
}
@Override
public void addNotify() {
synchronized (getTreeLock()) {
if (peer == null)
peer = getToolkit().createCanvas(this);
super.addNotify();
}
}
@Override
public void paint(Graphics g) {
g.clearRect(0, 0, width, height);
}
@Override
public void update(Graphics g) {
g.clearRect(0, 0, width, height);
paint(g);
}
@Override
boolean postsOldMouseEvents() {
return true;
}
@Override
public void createBufferStrategy(int numBuffers) {
super.createBufferStrategy(numBuffers);
}
@Override
public void createBufferStrategy(int numBuffers, BufferCapabilities caps) throws AWTException {
super.createBufferStrategy(numBuffers, caps);
}
@Override
public BufferStrategy getBufferStrategy() {
return super.getBufferStrategy();
}
@Override
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new AccessibleAWTCanvas();
}
return accessibleContext;
}
protected class AccessibleAWTCanvas extends AccessibleAWTComponent {
private static final long serialVersionUID = -6325592262103146699L;
@Override
public AccessibleRole getAccessibleRole() {
return AccessibleRole.CANVAS;
}
}
}
package eos.listeners;
import java.awt.*;
import java.util.EventListener;
public interface PaintListener extends EventListener {
public void onPaint(Graphics g);
}
Salut J'ai remplacé le code original par le vôtre et j'ai eu cette erreur. 'Erreur: (67, 15) java: ne peut pas trouver le symbole symbole: méthode addPaintListener () Lieu: toile variable de type java.awt.Canvas' Alors peut-être –
il y a un problème avec organisation et commande d'importation. – Gyrotank