2012-06-22 109 views
0

我们在运行于JRE 1.6.0_26的小程序中运行以下代码。Desktop.browse()打开多个窗口

Desktop.getDesktop().browse(new URI("www.google.com") 

在某些Windows 7 64位,IE8机器上,此命令会打开两个窗口,但不会打开其他应该是相同设置的窗口。 有没有人有任何想法会导致这种情况?

+0

这甚至不是一个可编辑的陈述。为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

+0

顺便说一句Applet也有['AppletContext.showDocument(URL,target)'](http://docs.oracle.com/javase/7/docs/api/java/applet/AppletContext.html#showDocument%28java.net。 URL,%20java.lang.String%29)。如果用户拥有插件2 JRE,那么您也可以使用[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)并使用'BasicService'方法显示一个新页面。 –

回答

0

我强烈怀疑这只是一些编码粗心(我和其他任何人一样有罪)。

考虑下面的代码:

JButton myButton1 = new JButton("Click 1"); 
myButton1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     Desktop.getDesktop().browse(new URI("www.google.com")); 
    } 
}); 

JButton myButton2 = new JButton("Click 2"); 
myButton1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     Desktop.getDesktop().browse(new URI("www.google.com")); 
    } 
}); 

注意这里的错误吗?

其目的是为每个按钮分配一个动作,但由于在myButton2定义之后不小心复制/粘贴,我们错误地将第二个动作分配给myButton1。

现在会发生什么是当用户点击myButton1时,第一个动作将被调用,导致浏览器显示www.google.com显示,然后第二个动作将被调用,导致另一个选项卡在该窗口或整个其他窗口中(取决于您的浏览器设置)。