Hallo zusammen,
ich habe gerade ein Problem mit der Anzeige von Canvas in JavaFx. Das Programm soll auf einer Oberfläche immer dort eine Form zeichnen, wo sich gerade der Mauszeiger befindet. Allerdings sehe ich irgenwie die Kreise nicht
Die Hauptklasse ist folgende:
Darin rufe ich dann die Zeichnen-Klasse auf:
Ich habe ausprobiert, ob es funktioniert, wenn man alles in einer Klasse zusammenfügt. Allerdings will ich und kann ich dies nicht machen, weil ich auch noch andere Komponenten einfügen werde, auf welchen man ebenfalls zeichnen kann.
Hat jemand eine Idee, wo der Fehler liegen könnte?
Vielen Dank
ich habe gerade ein Problem mit der Anzeige von Canvas in JavaFx. Das Programm soll auf einer Oberfläche immer dort eine Form zeichnen, wo sich gerade der Mauszeiger befindet. Allerdings sehe ich irgenwie die Kreise nicht
Die Hauptklasse ist folgende:
Code:
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
final AnchorPane pane = new AnchorPane();
Zeichnen p=new Zeichnen();
p.setPrefSize(300, 300);
p.toFront();
pane.getChildren().add(p);
Scene scene = new Scene(pane,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Darin rufe ich dann die Zeichnen-Klasse auf:
Code:
package application;
import javafx.event.EventHandler;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
public class Zeichnen extends Pane {
public Zeichnen() {
AnchorPane an= new AnchorPane();
final Canvas canvas = new Canvas(300,300);
canvas.prefHeight(300);
canvas.prefWidth(300);
drawOnCanvas(canvas,10,10);
an.getChildren().addAll(canvas);
addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
drawOnCanvas(canvas,(int)e.getX(),(int)e.getY());
}
});
}
public void drawOnCanvas(final Canvas canvas,int x,int y) {
final GraphicsContext gc = canvas.getGraphicsContext2D();
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
gc.setStroke(Color.BLACK);
gc.strokeOval(x, y, 10, 10);
System.out.println("Test");
}
}
Ich habe ausprobiert, ob es funktioniert, wenn man alles in einer Klasse zusammenfügt. Allerdings will ich und kann ich dies nicht machen, weil ich auch noch andere Komponenten einfügen werde, auf welchen man ebenfalls zeichnen kann.
Hat jemand eine Idee, wo der Fehler liegen könnte?
Vielen Dank