第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaFX 2.1:工具包未初始化

JavaFX 2.1:工具包未初始化

慕尼黑8549860 2019-10-19 16:31:19
我的應用程序是基于Swing的。我想介紹JavaFX并將其配置為在輔助顯示器上渲染場景。我可以使用JFrame來容納JFXPanel,而JFXPanel可以容納JFXPanel,但是我想使用JavaFX API來實現(xiàn)。不能將com.sun.glass.ui.Application子類化并使用Application.launch(this),因為調(diào)用線程將被阻止。當從Swing EDT實例化Stage時,我得到的錯誤是:java.lang.IllegalStateException: Toolkit not initialized有指針嗎?編輯:結(jié)論問題:不重要的Swing GUI應用程序需要運行JavaFX組件。應用程序的啟動過程會在啟動相關(guān)服務層后初始化GUI。解決方案子類化JavaFX Application類,并在單獨的線程中運行它,例如:public class JavaFXInitializer extends Application {    @Override    public void start(Stage stage) throws Exception {        // JavaFX should be initialized        someGlobalVar.setInitialized(true);    }}旁注:由于Application.launch()方法采用a Class<? extends Application>作為參數(shù),因此必須使用全局變量來表示JavaFX環(huán)境已初始化。替代方法:在Swing Event Dispatcher線程中實例化JFXPanel:final CountDownLatch latch = new CountDownLatch(1);SwingUtilities.invokeLater(new Runnable() {    public void run() {        new JFXPanel(); // initializes JavaFX environment        latch.countDown();    }});latch.await();通過使用這種方法,調(diào)用線程將等待,直到建立JavaFX環(huán)境為止。選擇您認為合適的任何解決方案。我選擇了第二個參數(shù),因為它不需要全局變量來表示JavaFX環(huán)境的初始化,并且也不會浪費線程。
查看完整描述

3 回答

?
偶然的你

TA貢獻1841條經(jīng)驗 獲得超3個贊

使用JavaFX的唯一方法是將Application子類化或使用JFXPanel,正是因為它們準備了env和toolkit。


阻塞線程可以使用來解決new Thread(...)。


盡管如果您在與Swing / AWT相同的VM中使用JavaFX,我建議使用JFXPanel,但是您可以在此處找到更多詳細信息:將AWT與JavaFx一起使用是否可以?


查看完整回答
反對 回復 2019-10-19
?
哆啦的時光機

TA貢獻1779條經(jīng)驗 獲得超6個贊

創(chuàng)建用于測試javaFX tableview更新的單元測試時,我使用了以下命令


public class testingTableView {

        @BeforeClass

        public static void initToolkit() throws InterruptedException

        {

            final CountDownLatch latch = new CountDownLatch(1);

            SwingUtilities.invokeLater(() -> {

                new JFXPanel(); // initializes JavaFX environment

                latch.countDown();

            });


            if (!latch.await(5L, TimeUnit.SECONDS))

                throw new ExceptionInInitializerError();

        }


        @Test

        public void updateTableView() throws Exception {


            TableView<yourclassDefiningEntries> yourTable = new TableView<>();

            .... do your testing stuff


        }

    }

即使這篇文章與測試無關(guān),也可以幫助我進行單元測試


如果沒有BeforeClass initToolkit,則在單元測試中實例化TableView將產(chǎn)生一條消息,提示缺少工具包


查看完整回答
反對 回復 2019-10-19
  • 3 回答
  • 0 關(guān)注
  • 1118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號