小编jen*_*ert的帖子

使用JFXPanel Swing互操作防止JavaFX线程死亡?

我将几个嵌入JFXPanels到Swing应用程序中,当JFXPanel不再可见时,JavaFX线程就会死掉.这是有问题的,因为JFXPanel在JavaFX线程死后创建另一个将不会启动另一个JavaFX线程,因此JFXPanel将为空.

据我所知,JFXPanel ctor通过调用以下命令启动JavaFX线程:

PlatformImpl.startup(new Runnable() {
   @Override public void run() {
      // No need to do anything here
   }
});
Run Code Online (Sandbox Code Playgroud)

后来一旦JFXPanel有父组件的addNotify方法调用它调用registerFinishListener一个注册到PlatformImpl.FinishListener()使用PlatformImpl.注册的行为FinishListener可以防止JavaFX线程在PlatformImpl.checkIdle()被调用时死亡.

当a JFXPanel不再可见时,其removeNotify方法是调用调用deregisterFinishListener():

private synchronized void deregisterFinishListener() {
    if (instanceCount.decrementAndGet() > 0) {
        // Other JFXPanels still alive
        return;
    }
    PlatformImpl.removeListener(finishListener);
    finishListener = null;
}
Run Code Online (Sandbox Code Playgroud)

instanceCount为零时,FinishListener将删除导致PlatformImpl调用PlatformImpl.tkExit以下代码导致JavaFX线程死亡:

private …
Run Code Online (Sandbox Code Playgroud)

java swing interop javafx javafx-8

7
推荐指数
1
解决办法
2150
查看次数

ReactiveX在超时后发出null或sentinel值

寻找一种干净的方法来转换源Observablenull在一段时间内不发出项目后发出单个(或标记值).

例如,如果源可观察的发射1, 2, 3然后在发射之前停止发射10秒,4, 5, 6我希望发射的项目是1, 2, 3, null, 4, 5, 6.

用例用于在UI中显示值,其中显示的值应变为破折号-或者N/A最后发出的值是陈旧/旧的.

我查看了timeout运算符,但它终止Observable了超时发生的时间,这是不可取的.

使用RxJava.

rx-java reactivex

6
推荐指数
1
解决办法
1171
查看次数

为什么Intellij在复制文件时执行“hg copy”?

我注意到,当在 Intellij 中复制文件时,它将在幕后执行“hg 复制”,这在大多数情况下(如果不是全部)对于我的标准用途来说是不可取的。有谁知道这种行为的理由?是否可以禁用此行为?

mercurial intellij-idea

5
推荐指数
1
解决办法
140
查看次数

模拟接口克隆方法

嘲弄一个clone()接口上的方法似乎不再有工作的Mockito 2.1.0.下面的代码适用于Mockito 1.10.19,IllegalAccessErrorMockito 2.1.0中抛出一个:

public interface CloneableInterface extends Cloneable {
   CloneableInterface clone();
}

public class CloneableInterfaceTest {

   @Test
   public void test() {      
     CloneableInterface i = Mockito.mock(CloneableInterface.class);
     Mockito.when(i.clone()).thenReturn(i); // Throws IllegalAccessError
   }
}
Run Code Online (Sandbox Code Playgroud)

运行测试结果:

java.lang.IllegalAccessError: CloneableInterface$MockitoMock$833899610.clone()LCloneableInterface;
Run Code Online (Sandbox Code Playgroud)

我检查了mockito bug列表并搜索了一下但没有发现任何内容.在与mockito团队提交错误报告之前,想先检查SO社区.

环境:JDK 1.8.0_102,JUnit 4.11,Mockito 2.1.0,Gradle 3.0,Windows 10

编辑:在这里提到了mockito团队的一个错误

java mockito

5
推荐指数
1
解决办法
877
查看次数

什么时候会发布Findbugs 3.0.0 FINAL?

我的理解是Findbugs 3.0.0将支持分析Java 8字节码.我看到它的测试版可以在这里找到:

http://sourceforge.net/projects/findbugs/files/findbugs/3.0.0/

SonarQube正在等待Findbugs 3.0.0的最终版本发布,然后再升级他们的Java插件才能使用它.这意味着SonarQube无法分析我们的Java 8项目.

是否有Findbugs 3.0.0版本的目标日期或使用SonarQube的beta版本的已知解决方法?

findbugs java-8 sonarqube

3
推荐指数
1
解决办法
1479
查看次数