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