So I am trying to create something that draws axis on a canvas. I want to set the color of the axis to red by using the setStroke method but it tells me that I am giving a wrong type parameter. The thing that puzzles me is that ,whilst using someones example code it doesnt give an error at all. My code :
package lissa;
import java.awt.Color;
import javafx.scene.Node;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
public class kalf extends Canvas{
private GraphicsContext gc ;
private Color kleurAs;
public kalf(Node achtergrond){
super(); // hoe moet je de grootte instellen?
gc = getGraphicsContext2D();
kleurAs = Color.RED;
tekenAs(gc);
}
public void tekenAs(GraphicsContext gc){
//here is the problem
gc.setStroke(kleurAs);
gc.strokeLine(d, d1, d2, d3);
}
Example code:
public class LissajousCanvas extends Canvas {
private final LissajousData data;
private static final int AANT_PTN = 200;
private static final int RAND = 5;
private final GraphicsContext gc;
private final int factor;
private Color kleurAs;
private ContextMenu menu;
public LissajousCanvas(LissajousData data, double width, double height) {
super(width, height);
this.data = data;
gc = this.getGraphicsContext2D();
factor = Math.min((int) getWidth(), (int) getHeight()) - 2 * RAND;
kleurAs = Color.RED;
tekenAssen();
getStyleClass().add("canvas");
maakContextMenu();
final LissajousCanvas canvas = this;
addEventHandler(MouseEvent.MOUSE_CLICKED,
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
if (e.getButton() == MouseButton.SECONDARY) {
menu.show(canvas, e.getScreenX(), e.getScreenY());
}
}
});
}
private void tekenAssen() {
//this is where it is correctly employed ,whilst still using GraphicsContext as caller + having a
//color for parameter
gc.setStroke(kleurAs);
gc.strokeLine(0, factor / 2 + RAND, factor + 2 * RAND, factor / 2 + RAND);
gc.strokeLine(factor / 2 + RAND, 0, factor / 2 + RAND, factor + 2 * RAND);
}
}
Any ideas why the first piece of code is incorrect and the second one isnt?
You use the wrong import. JavaFX has it's own Color
class.
Use
import javafx.scene.paint.Color;
instead of
import java.awt.Color;