2016-06-24 3 views
1

У меня вопрос.Как инициализировать JavaFX Tookit?

Как инициализировать инструментарий JavaFX с помощью метода, который я нашел в более раннем вопросе StackOverflow? Тему можно найти здесь: JavaFX 2.1: Toolkit not initialized

Я пытаюсь использовать решение, подобное этому решению из этого потока:

Задача: Нетривиальный приложение Качели GUI необходимо запускать компоненты JavaFX. Процесс запуска приложения инициализирует графический интерфейс после запуска зависимого уровня обслуживания.

Решения Подкласс класса JavaFX приложений и запустить его в отдельном потоке, например: *

public class JavaFXInitializer extends Application { 
    @Override 
    public void start(Stage stage) throws Exception { 
     // JavaFX should be initialized 
     someGlobalVar.setInitialized(true); 
    } 
} 

Единственная проблема у меня есть: Что мне делать с

someGlobalVar.setInitialized(true); ? 

Я не знать, что заполнить там, и некоторые советы будут оценены :)

+3

Разве вы не можете использовать ['JFXPanel'] (http://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/JFXPanel.html)? Он запустит набор инструментов для создания экземпляра, если он еще не запущен. –

+0

@James_D Я мог бы, но вещь с JFXPanel заключается в том, что она использует примерно 10 МБ ОЗУ, даже если она установлена ​​в нуль, требуется довольно много времени, прежде чем GC заберет ее. Я знаю, что 10MB не звучит, как большое дело, но мне не нравится незащищенное использование ресурсов. – ImJustACowLol

+1

Я подозреваю, что подавляющее большинство из них используется, потому что он запускает FX Toolkit ... –

ответ

1

I a m написать этот ответ для комментария, который вы сделали о том, как поддержать (.mp3,.wav,.flac,.ogg) и т. д. в java.For .mp3 вы можете использовать JLayerhttp://www.javazoom.net/projects.html поиск в Интернете для примера.

О (.mp3,.wav.flac,.ogg), а некоторые больше вы можете использовать JavaZoomBasicPlayer который использует некоторые внешние библиотеки для поддержки их вы можете скачать зип папку here (скачать без инсталлятора и вы открываете папку почтового индекса).

Затем перейдите в папку Lib и скопировать все .jars кроме kj_dsp, которые могут быть использованы для визуального представления на аудиоданных и содержит также класс о быстрого преобразования Фурье (FFT) .Также изменить MP3_SPI1.9.3 с MP3SPI1.9.4

Затем добавьте эти .jars в библиотеках проекта и просто использовать:

BasicPlayer player = new BasicPlayer(); 

Все это использует Service Provider Interface (SPI) механизм.

Он работает на отдельной ветке, поэтому вам не нужно беспокоиться. Это работает очень хорошо, но проект немного стар. Это хороший старт! О документах проверяйте сайт.

+0

Я буду смотреть глубже в это завтра. Насколько я вижу, у BasicPlayer нет некоторых функций, которые я, вероятно, должен добавить, например, получить текущую позицию в аудиоклипе и получить максимальную позицию. Но я покажу, как это сделать в конечном итоге;) Я ухожу. Спасибо за помощь до сих пор бутон! – ImJustACowLol

+0

@ImJustACowLol принят как ответ? :) ... Когда вы используете java sound api, вы можете идти как можно ниже. Я имею в виду, что вы можете управлять звуком по частям. – GOXR3PLUS

+0

Я понимаю это, но я довольно новичок в аудиопроцессе, поэтому я предпочитаю использовать библиотеки на данный момент :) – ImJustACowLol

0
import com.sun.javafx.application.PlatformImpl; 

public class JavaFXInitializer 
{ 

     public JavaFXInitializer() 
     { 
      initFx(); 
     } 
     private synchronized static void initFx() { 
      PlatformImpl.startup(() -> { 
      }); 
     } 
} 
+2

Не используйте непубличный API. –