0

我们在 JRE 1.6.0_26 中运行的小程序中运行以下代码。

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

在某些 Windows 7 64 位、IE8 机器上,此命令会打开两个窗口,但在其他应该是相同设置的窗口上不会。有谁知道会导致这种情况的原因是什么?

4

1 回答 1

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 的浏览器,然后调用第二个操作,导致该窗口中出现另一个选项卡或另一个窗口(取决于您的浏览器设置)。

于 2012-10-11T15:57:25.300 回答