动态打开多个JFrame 发生死锁

hoodlake 发布于 2014/10/03 03:35
阅读 658
收藏 2

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

代码如下:
Rectangle bounds = new Rectangle(new Point(960, 100), new Dimension(280, 540));
//1.第一个JFrame
new JFrame().setBounds(bounds).setVisiable(true);

//这一行很重要,如果注释掉,就能打开两个JFrame,否则就会发生死锁
//我尝试了下,我电脑上,每个JFrame直接打开的时间间隔如果超过100ms就会发生死锁
//死锁发生在调用setVisiable(true)时
Thread.sleep(1000);  

bounds = new Rectangle(new Point(160, 100), new Dimension(580, 540));
//2.第二个JFrame
new JFrame().setBounds(bounds).setVisiable(true);

怎么破?JFrame是不是就不支持这么做?我上网搜了,很多人出现这样的问题,但是都没解决,也没说明原因,都采用了其他方案解决了,但是没弄明白很不爽啊





以下是问题补充:

@hoodlake:解决了,感谢这个博客的作者 http://www.cnblogs.com/lnlvinso/p/3685863.html (2014/10/03 18:23)
加载中
0
hoodlake
hoodlake
//需要这样包装下
SwingUtilities.invokeLater( new Runnable() {
	        @Override
	        public void run() {
	        	JFrame window = new JFrame();
	    		window.add(browerUI_);
	    		window.setIconImage(ResourceUtils.HEAD_ICON);
	    		window.setUndecorated(true);
	    		System.out.println("check hung it");
	    		if(!window.isVisible()){
	    			window.setVisible(true);
	    		}
	    		System.out.println("not hung");
	    		window.setBounds(bounds);
	    		JBinds jbinds =new JBinds(window, cefClient, cefBrowser);
	    		jwindows.put(win_id, jbinds);
	        }
	      });



OSCHINA
登录后可查看更多优质内容
返回顶部
顶部