1

所以我正在尝试创建在画布上绘制轴的东西。我想使用 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);

}
}

任何想法为什么第一段代码不正确而第二段代码不正确?

4

1 回答 1

1

您使用了错误的导入。JavaFX 有它自己的Color类。

采用

import javafx.scene.paint.Color;

代替

import java.awt.Color;
于 2014-04-20T09:49:20.063 回答