Kann Klasse nicht zu JFrame adden?
Hier der Code:
package Pacman;
public class Main {
Main() {
new Window("Pacman", 800, 600, this);
}
public void start() {
}
public static void main(String[] args) {
new Main();
}
}
package Pacman;
//neue Klasse
import java.awt.Canvas;
import java.awt.Dimension;
import javax.swing.JFrame;
public class Window extends Canvas{
private static final long serialVersionUID = -7417798686537082064L;
public Window(String title, int width, int height, Main game) {
JFrame frame = new JFrame(title);
frame.setPreferredSize(new Dimension(width, height));
frame.setMaximumSize(new Dimension(width, height));
frame.setMinimumSize(new Dimension(width, height));
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.add(game);
frame.setVisible(true);
game.start();
}
}
Ich krieg beim Code die Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method add(Component) in the type Container is not applicable for the arguments (Main)
Die selbe Methode hat bei vorherigem Code immer funktioniert. Ich hab auch schon probiert den vorherigen Code rüber zu kopieren. Ich weis nicht mehr weiter, könnt ihr mir helfen?
In welcher Zeile ist der Fehler denn?
22 bei Window, und dann halt 5 und 13 bei Main weil ein Fehler in Window ist.
1 Antwort
Die add-Methode erwartet einen Component-Typ, den du aber nicht lieferst. Die Variable game ist vom Typ Main. Und Main erbt nicht von Component.
Generell wirkt deine Struktur etwas wirr. Es wäre doch besser, den JFrame nicht in Window zu erzeugen, um diese Abhängigkeit zu lösen. Des Weiteren handelt es sich bei Window doch um gar kein Fenster, sondern eine Zeichenfläche. Also gib der Klasse doch auch einen dementsprechenden Namen.