Hallo zusammen,
ich wollte zwei schwarze diagonale Linie in meinem Fenster/Canvas anzeigen lassen wie das Screenshot unten.
Foto von hier
Mein Problem ist es, dass die Linie in meinem Canvas leider nicht angezeigt wurden. Ich habe etwas Zeile geschrieben in der redraw()-Methode in der Kontroller-Klasse, danach versuchte ich die Methode in der Start-Method in der Main-Klasse aufzurufen wie hier:
Kann man mir vielleicht eine Hilfsstellung geben? Vielleicht fehlt mir was.
ich wollte zwei schwarze diagonale Linie in meinem Fenster/Canvas anzeigen lassen wie das Screenshot unten.
Foto von hier
Mein Problem ist es, dass die Linie in meinem Canvas leider nicht angezeigt wurden. Ich habe etwas Zeile geschrieben in der redraw()-Methode in der Kontroller-Klasse, danach versuchte ich die Methode in der Start-Method in der Main-Klasse aufzurufen wie hier:
Java:
public class HelloController {
private static Label widthLabel;
private static Label heightLabel;
private ResizableCanvasPane canvasPane;
private BorderPane root;
//StringsProperties zum Breite und Höhe von Labels anzeigen lassen
private StringProperty widthLabelText = new SimpleStringProperty();
private StringProperty heightLabelText = new SimpleStringProperty();
public void initialize(){
canvasPane = new ResizableCanvasPane();
canvasPane.dimension2DSimpleDoubleProperty.addListener((observable, oldValue, newValue) -> {
redraw();
});
//Breite und -höheLabels mit deren von IntegerExpressions-Properties binden
IntegerExpression widthExpression = Bindings.createIntegerBinding(() -> (int) canvasPane.getWidth(), canvasPane.widthProperty());
IntegerExpression heightExpression = Bindings.createIntegerBinding(() -> (int) canvasPane.getHeight(), canvasPane.heightProperty());
//Die StringProperties mit IntegerExpressions binden und auf String umwandeln
widthLabelText.bind(Bindings.convert(widthExpression));
heightLabelText.bind(Bindings.convert(heightExpression));
//Grenze zum TextProperties von Labels aufsetzen
widthLabel.textProperty().bind(widthLabelText);
heightLabel.textProperty().bind(heightLabelText);
//Das ResizableCanvasPane auf den Root-Element zentrieren
root.setCenter(canvasPane);
}
public static void redraw(){
Canvas canvasPane = new Canvas();
GraphicsContext gc = canvasPane.getGraphicsContext2D();
gc.setStroke(Color.BLACK);
gc.moveTo(0,0);
gc.lineTo(canvasPane.getWidth(), canvasPane.getHeight());
gc.moveTo(0, canvasPane.getHeight());
gc.lineTo(canvasPane.getWidth(), 0);
gc.stroke();
}
}
//die start-Methode liegt in andere Klasse als redraw()
//hier wird versucht, um redraw() in der start-Methode() anzurufen
@Override
public void start(Stage stage) {
/*
inzwischen gibt es Zeile für GeometrieObjekte, Statusbar usw
*/
HelloController controller = new HelloController();
controller.redraw();
stage.show();
stage.setOnCloseRequest(we -> System.out.println("Closing application!"));
}
Kann man mir vielleicht eine Hilfsstellung geben? Vielleicht fehlt mir was.