Почему мой кусок кода не принимает цвет в качестве параметра?

Поэтому я пытаюсь создать что-то, что рисует ось на холсте. Я хочу установить цвет оси на красный с помощью метода 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);

}
}

Любые идеи, почему первый кусок кода является неправильным, а второй нет?

1 ответ

Решение

Вы используете неправильный импорт. JavaFX имеет свой собственный Color учебный класс.

использование

import javafx.scene.paint.Color;

вместо

import java.awt.Color;
Другие вопросы по тегам