Java FX noob, но я перепробовал все, что знаю и могу найти у других в сети.Я проверил JVM на версии 1.8 и очистил / перестроил весь пакет.
Попытка создать программу, отображающую 3 объекта один за другим, навсегда на пустом фоне, до сбоя / закрытия программыв классе под названием Painter.Он вызывается / управляется классом Controller в том же пакете.
Методы в Painter - это start (), run () и main (), первые два имеют ошибки, а также само объявление класса.
Объявление класса имеет погрешность заголовка.run () переопределяется, но все еще имеет жалобу "должен переопределить или наследовать метод супертипа".start () имеет несколько ошибок.Я пытался заставить его реализовать приложение напрямую, но он все еще жалуется на это.
package anonAssignment2; //@author anon, course#
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.canvas.*;
import javafx.scene.canvas.Canvas;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.scene.text.*;
import javafx.scene.paint.Color;
import javafx.event.EventHandler;
import javafx.event.ActionEvent;
import javafx.animation.KeyFrame;
//Handles animation timing
import javafx.util.Duration;
import java.util.Timer; // ->
import java.lang.*; //Thread.sleep(int milliseconds)
/*
* Painter- handles shape drawing
* Extends application to be within spec, called by controller
* Implements EventHandler for 3000ms changing of shape
*/
public class Painter extends Application {
public static void main(String[] args) {
Application.launch(args);
}
Painter painter = new Painter();
Pane pane = new Pane();
private Canvas canvas = new Canvas(300, 300);
GraphicsContext gc = canvas.getGraphicsContext2D();
/** Method to start continuously displaying GUI shapes/objects
*
*/
@Override
public void run() {
while(true) {
//Always true, runs until program killed/crashes
gc.setStroke(Color.RED);
gc.strokeOval(150, 150, 100, 100); //circle
java.lang.Thread.sleep(3000);
gc.clearRect(100, 100, 100, 100); //For purposes of this program, blank background, clearing rectangle works
gc.setStroke(Color.GREEN);
gc.strokeRect(100, 100, 100, 100); //Square
java.lang.Thread.sleep(3000);
gc.clearRect(100, 100, 100, 100);
gc.setStroke(Color.BLUE);
gc.strokeText("Course # and Title", 100, 140); //Text, approximately centered
java.lang.Thread.sleep(3000);
gc.clearRect(100, 100, 100, 100);
}
}
/**Start command, uses primaryStage instance
* Called by Controller
*
*/
@Override
public void start(Stage primaryStage) implements Application throws Exception {
Pane pane = new Pane();
pane.setPrefWidth(300);
pane.setPrefHeight(300);
Scene scene = new Scene(pane);
primaryStage.setTitle("Rheault Project 2");
primaryStage.setScene(scene);
primaryStage.show();
Controller instance = new Controller(painter);
//Controller constructor with argument of painter instance
}
}
//controller.java class:
//@author anon, course #
package anonAssignment2;
public class Controller extends Thread {
private Painter painter;
public Controller(Painter painter) {
this.painter = painter;
Painter.start();
}
public void run() {
while (true) {
painter.paint();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
'' ''