JavaFX在后台加载

时间:2015-10-15 03:02:17

标签: java javafx javafx-8

如果主线程在后台加载一堆数据并最终将其加载到主Dialog上,我如何在前台有一个ProgressIndicator不确定的Scene。目前,当程序加载时,页面是白色的,没有响应,只是看起来很糟糕。此外,这是最好的方法,还是有更好的方法。

1 个答案:

答案 0 :(得分:0)

您的窗口被冻结/无响应,因为您正在主线程中加载此数据(这是JavaFX用于渲染窗口的线程)。

您需要做的是在一个单独的线程中执行加载,该线程将与主线程并行运行。加载完成后,该线程将通知主线程并传递加载的数据供您渲染。

以下是创建加载数据的新线程的快捷方法:

ProgressIndicator

如果您使用此功能,您的不确定 $str = '<select name="options[45]" id="select_45" class=" required-entry product-custom-option" title="" onchange="opConfig.reloadPrice()"> <option value="" >-- Please Select --</option> <option value="76" price="0" >Certified Networking </option> <option value="89" price="0" >Certified Virtualization </option> <option value="90" price="0" >Certified Expert Virtualization </option> <option value="91" price="0" >Certified Mobility </option> <option value="92" price="0" >Certified Professional Networking </option> <option value="93" price="0" >Certified Professional Virtualization </option> </select>'; $array = array('-- Please Select --','Certified Networking', 'Certified Mobility'); $strToArray = explode("</option>",$str); foreach ($strToArray as $stringOption) { foreach ($array as $string) { if (strpos($stringOption,$string)) { echo $stringOption ; } } } 将不会受到影响。

有很多方法可以“通知主线程”。您也许可以将主类的实例传递给辅助线程,当数据完成加载时,您只需在该实例上调用一个方法。