javafx анонимный класс приложения

Я привык к Swing и изучаю javafx. В разгареd создать класс, расширяющий Jpanel, и затем иметь возможность протестировать этот класс с помощью пары строк кода в том классе, который создал JFrame.

Так что в javafx я подумал, что могу просто расширить Scene или Group, а затем создать анонимный класс Application в main, но это невозможно:

Исключение в теме "главный" java.lang.RuntimeException: Ошибка: класс test.Test не является подклассом javafx.application.Application в javafx.application.Application.launch (Application.java:211) в test.Test.main (Test.java:59)

Я нея не хочу создавать подклассы Application, поскольку я хочу следовать этому шаблону для множества сцен / групп, и может быть только один объект Application.

Когда это неЯ подумал, что смогу написать простой класс, который расширяет Application и затем на основе предоставленных аргументов использует отражение для создания моей сцены, но это неЭто тоже не работает, так как для сцены нет конструктора по умолчанию ... В группе есть конструктор по умолчанию, так что, может быть, мне нужно создать его подкласс вместо Scene?

Должен быть способ сделать это ... это всегда был способ тестирования java 101 и отдельный класс. Кто-нибудь когда-нибудь делал это? Любые мысли или идеи о том, как достичь того, что яя пытаюсь сделать здесь?

Java-версия "1.7.0_21"

Java (TM) SE Runtime Environment (сборка 1.7.0_21-b11)

Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 23.21-b01, смешанный режим)

Вот мой код:

package test;

import javafx.application.*;
import javafx.geometry.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.*;
import javafx.scene.input.*;
import javafx.scene.effect.*;

public class Test extends javafx.scene.Scene
{
   public Test( javafx.scene.Group group, int width, int height )
   {
      super( group, width, height );
      GridPane grid = new GridPane();
      grid.setVgap( 4 );
      grid.setHgap( 10 );
      grid.setPadding( new Insets( 5, 5, 5, 5 ) );

      final Button button = new Button ("Ok");
      final Label notification = new Label ();
      final TextField subject = new TextField("");     
      final TextArea text = new TextArea ("");

      final ComboBox priorityComboBox = new ComboBox();       
      priorityComboBox.getItems().addAll( "Highest", "High", "Normal", "Low", "Lowest" );
      priorityComboBox.setValue("Normal"); 

      grid.add(new Label("Priority: "), 0, 0);
      grid.add(priorityComboBox, 1, 0);
      grid.add(new Label("Subject: "), 0, 1);
      grid.add(subject, 1, 1, 3, 1); 
      grid.add(text, 0, 2, 4, 1); 
      grid.add(button, 0, 3);

      group.getChildren().add( grid );
   }

   public static void main(String [] args)
   {
      Application app = new Application()
      {
         public void start(Stage stage)
         {
            stage.setTitle( "Test" );
            Scene scene = new Test( new Group(), 450, 250);
            stage.setScene( scene );
            stage.show();
         }

      };
      app.launch( args );
   }
}

Ответы на вопрос(1)

Ваш ответ на вопрос