FXML:“初始化后运行”

我有一个JavaFX应用程序,它使用FXML和用Java编写的控制器类。 在Java控制器中,我需要注意不要在FXML Node元素上进行操作,直到它被初始化(否则我会得到一个NullPointerException),这在initialize方法运行之前是无法保证的。 所以我发现自己做了很多事情: 控制器在FXML文件中设置如下: … 然后这是Java文件中的控制器。 class Controller{ @FXML Pane aPane; int globalValue; public void setSomething(int value){ globalValue = value; if(!(aPane == null)){ //possibly null if node not initialized yet aPane.someMethod(globalValue) } } @FXML void initialize(){ aPane.someMethod(globalValue) //guaranteed not null at this point } } 这是有效的,但它很笨重,重复。 我必须创建globalValue属性,以防在调用initialize之前调用setSomething方法,并且我必须确保setSomething方法中的操作与initialize的操作相同。 当然有更优雅的方式来做到这一点。 我知道JavaFX有Platform.runlater(…)方法,可以保证在主应用程序线程上运行一些东西。 Perhpas有像Platform.runAfterInitialize(…)这样的东西,等到初始化,或者如果初始化已经发生则立即运行? 或者,如果有另一种方法可以做到这一点,我愿意接受建议。

AppEngine Java:API调用file.Create()花了太长时间才响应并被取消

我们在尝试将文件写入Blobstore时会遇到此exception。 它通常出现一两分钟,然后一切恢复正常。 它已在http://code.google.com/p/googleappengine/issues/detail?id=5723上报告,但已标记为已关闭。 你们经历过这样的事吗? 完整的堆栈跟踪是: com.google.apphosting.api.ApiProxy$ApiDeadlineExceededException: The API call file.Create() took too long to respond and was cancelled. at java.lang.Thread.getStackTrace(Thread.java:1495) at com.google.apphosting.runtime.ApiProxyImpl.doSyncCall(ApiProxyImpl.java:218) at com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:67) at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:163) at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:161) at java.security.AccessController.doPrivileged(Native Method) at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:161) at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:67) at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:101) at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:50) at com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:557) at com.google.appengine.api.files.FileServiceImpl.create(FileServiceImpl.java:479) at com.google.appengine.api.files.FileServiceImpl.createNewBlobFile(FileServiceImpl.java:99) at com.google.appengine.api.files.FileServiceImpl.createNewBlobFile(FileServiceImpl.java:81) at ar.com.zupcat.lib.util.BlogstoreUtil.saveToBlogstoreImpl(BlogstoreUtil.java:69) 谢谢!

无法在Java中向二进制搜索树添加1,000,000个元素

我正在将二进制搜索树作为一项任务。 当我尝试添加1,000,000个元素时,我遇到了问题。 插入15,000个元素后,我收到错误: 线程“main”java.lang.StackOverflowError中的exception 我的代码有问题我无法找到我做错的地方。 public class BinarytreeInsert { public static void main(String[] args) { new BinarytreeInsert().run(); } static class Node { Node left; Node right; int value; public Node(int value) { this.value = value; } } public void run() { Node rootnode = new Node(25); System.out.println(“Building tree with root value ” + rootnode.value); System.out.println(“=================================”); […]

Google Maps API v2多个地图片段问题

我已经尝试了新的谷歌地图api v2的几个问题 我有一个包装mapFragment的片段,这是在应用程序的乞讨时创建的。 在用户单击按钮时创建的另一个片段,此内容为另一个mapFragment。 但是这张地图显示了第一个片段上显示的第一张地图。 它也冻结了,不能对它采取行动…… 我已经读过一些用户在显示多地图时遇到问题。 知道怎么解决这个问题? 这是我创建地图的方式: mMapFragment = (SupportMapFragment) this.getActivity().getSupportFragmentManager() .findFragmentByTag(MAP_FRAGMENT_TAG); // We only create a fragment if it doesn’t already exist. if (mMapFragment == null) { // To programmatically add the map, we first create a // SupportMapFragment. mMapFragment = SupportMapFragment.newInstance(); mMapFragment.setRetainInstance(false); // Then we add it using a FragmentTransaction. FragmentTransaction […]

为什么FacesServlet找不到.xhtml Facelet?

我用Eclipse和JBoss Tools创建了一个JSF项目。 现在我有了结构: MyProjectFolder ⌊ WebContent ⌊ WEB-INF | ⌊ lib | ⌊ faces-config.xml | ⌊ web.xml ⌊ META-INF ⌊ index.xhtml 我的web.xml将以下扩展映射到FacesServlet: /faces/* , *.jsf , *.faces 当我现在尝试访问/faces/index.xhtml和index.faces我得到404未找到错误。 只有当我直接访问index.xhtml时,我才得到一个页面,但没有jsf-content(对我来说很清楚)。 所以我现在的问题是FacesServlet如何解析来自我的URL-Params的Faclet-Filename和路径? 我怎样才能确保不能直接访问index.xhtml? PS我知道为* .xhtml添加servlet映射的解决方案,但我认为应该有另一种选择。 问候!

用于POST请求的HttpURLConnection App Engine Java示例不起作用

我正在尝试在app引擎应用程序下使用urlfetch执行POST请求。 我已按照“使用HttpURLConnection”部分下的App Engine文档(此处为https://developers.google.com/appengine/docs/java/urlfetch/usingjavanet )中的简单示例提取的说明(和代码)进行了操作。 。 import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStreamWriter; String message = URLEncoder.encode(“my message”, “UTF-8”); try { URL url = new URL(“http://httpbin.org/post”); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod(“POST”); OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); writer.write(“message=” + message); writer.close(); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { […]

JDBC:Oracle Application Server和“网络适配器无法建立连接”错误

我收到错误:“网络适配器无法与Oracle应用服务器10g中部署的Web应用程序建立连接”。 数据库是本地的,因此不应存在任何连接问题。 第一次测试:我可以连接到DB没有问题从SQL加,运行查询等。第二次测试:我可以从服务器上本地安装的JDeveloper连接数据库没问题,并运行查询等没问题。 这适用于简短的JDBC scring和长的scring(如下所示)。 JDBC:预言:瘦:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST =本地主机)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ABCD)(SERVER = DEDICATED))) 然而,当我运行Web应用程序时,它会出现上述错误。 对我来说似乎太通用了。 有关如何解决这个问题的任何建议? 我假设Oracle在某处记录了失败的连接尝试,但我在数据库alert.log文件中找不到任何相关内容。 问题可能是应用程序使用旧的jsdk,但我认为然后会给出一些版本不匹配错误而不是“网络连接”消息。 编辑:我不知道这是一个OAS问题还是特定Web应用程序的问题,我想首先想出来,因为它似乎应该很容易。 在WebSphere中,有一个“测试连接”按钮来指定您添加的目标数据源,但似乎OAS10中没有这样的function? 不知何故,我认为必须有,而我只是错过了,因为我不是美洲国家组织的专家。 编辑2:我在远程计算机上安装了JDevelop并且没有任何问题连接到数据库,因此我确信这不是数据库连接本身的问题 – 看起来它必须是OAS中的问题?

将Azure Media Services缩略图任务预设与Java SDK一起使用

Windows Azure文档提供了一个任务预设,用于在C#中创建缩略图和示例代码: https : //msdn.microsoft.com/en-us/library/azure/hh973624.aspx 我试图使用java SDK http://azure.microsoft.com/en-us/develop/java/并从服务器获取错误400。 我的代码的相关摘录是: JobInfo jobInfo = mediaService .create(Job .create() .setName( “Encoding ” + assetToEncode.getName() + ” to ” + encodingPreset + ” and Packaging to HLS”) .addInputMediaAsset(assetToEncode.getId()) // Thumbnails see // https://msdn.microsoft.com/en-us/library/azure/hh973624.aspx .addTaskCreator( Task.create( mediaProcessor.getId(), “” + “” + “” + “”).setConfiguration( “Thumbnails”) .setOptions( TaskOption.ProtectedConfiguration).setName( “Thumbnails”)) 有没有人有一个使用java的这个任务的工作示例?

如何在实时语法荧光笔中处理多行注释?

我正在编写自己的文本编辑器,在Java中使用语法高亮显示,目前它只是在每次用户输入单个字符时解析并突出显示当前行。 虽然可能不是最有效的方式,但它足够好并且不会引起任何明显的性能问题。 在伪Java中,这将是我的代码的核心概念: public void textUpdated(String wholeText, int updateOffset, int updateLength) { int lineStart = getFirstLineStart(wholeText, updateOffset); int lineEnd = getLastLineEnd(wholeText, updateOffset + updateLength); List foundTokens = tokenizeText(wholeText, lineStart, lineEnd); for(Token token : foundTokens) { highlightText(token.offset, token.length, token.tokenType); } } 真正的问题在于多行注释。 要检查输入的字符是否在多行注释中,程序需要解析回最近出现的“/ *”,同时还要知道这种情况是出现在文字还是其他注释中。 如果文本量很小,这不会是一个问题,但如果文本包含20,000行代码,则可能必须在每个按键上扫描并重新突出显示20,000行代码,这将是非常低效的。 所以我的最终问题是:如何在语法高亮显示中处理多行令牌/注释,同时保持高效?

Spring Transaction Management:使用@Transactional与使用AOP(<aop:advisor)

我对Spring事务管理感到困惑。 在我的应用程序中,我使用服务类中的@Transactional实现了事务管理。 我配置我的spring.xml就像: ${jdbc.dialect} false update 如果我在配置文件中实现事务管理,而不在服务类中使用@Transactional: 它是否比@Transactional给我任何好处? 有人告诉我使用@Transactional也是在spring实施AOP。 谁能解释我怎么样?