public class Signal2NoiseRatio
{
public ImagePlus SingleSNR(ImagePlus imagePlus) throws InterruptedException
{
new Thread()
{
@Override public void run()
{
JFrame imageFrame = new JFrame("ROI");
Container imageFrame_Container = imageFrame.getContentPane();
IIImagePanel imagePanel = new IIImagePanel();
imageFrame_Container.add(imagePanel);
imagePanel.setImage(imagePlus.getImage());
imagePanel.getDisplayedImage();
imageFrame.setVisible(true);
final SNRSingleImageListener sNRSingleListener = new SNRSingleImageListener(imagePanel);
imagePanel.addMouseListener(sNRSingleListener);
imagePanel.addMouseMotionListener(sNRSingleListener);
}
}.start();
new Thread()
{
@Override public void run()
{
for (int i = 0; i <= 2000; i++)
{
System.out.println("schleife "+i);
// ask if useractions are done ..
}
synchronized(Signal2NoiseRatio.this)
{
Signal2NoiseRatio.this.notifyAll();
}
}
}.start();
synchronized (this)
{
this.wait();
// if userinteractions are done, go on
}
return imagePlusToProcess;
}
}
第一个new Thread()
执行在其中呈现图像的帧。我的目的是在新线程中呈现图像,以等待图像上的某些用户交互。但是代码引导框架变成白色窗口,图像不可见,并且框架不可用。Java并行线程
在第二个线程中,我想在短时间间隔内询问用户操作是否完成。
这不是一个很好的解决方案,但它有可能吗?这里有什么问题?
谢谢你stackoverflow.com!
你'IIImagePanel'类没有线程工作? – martijno 2012-08-14 12:46:29
一个问题是,您无法从除事件分派线程以外的任何线程创建或访问Swing组件。其次,您的'notifyAll()'调用永远不会执行,因为它位于'synchronized'块中。我相信你所寻找的是什么,这些“同步”块都不是必需的。 – 2012-08-14 12:48:41
IIImagePanel工作时没有线程。 – hagem 2012-08-14 13:36:56