所以我试图创建一些在画布上绘制轴的东西。 我想通过使用setStroke方法将轴的颜色设置为红色,但它告诉我我给出了错误的类型参数。令我困惑的是,虽然使用某些代码示例代码但它根本不会给出错误。 我的代码:
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){
//这是问题
gc.setStroke(kleurAs);
gc.strokeLine(d, d1, d2, d3);
}
示例代码:
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() {
//这是正确使用的地方,同时仍然使用GraphicsContext作为调用者+具有
//参数的颜色
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);
}
}
任何想法为什么第一段代码不正确而第二段不是?
答案 0 :(得分:1)
您使用了错误的导入。 JavaFX拥有自己的Color
类。
使用
import javafx.scene.paint.Color;
而不是
import java.awt.Color;