0

JRE 1.6.0_26 で動作するアプレットで次のコードを実行しています。

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

一部の Windows 7 64 ビット、IE8 マシンでは、このコマンドは 2 つのウィンドウを開きますが、同じセットアップである必要がある他のウィンドウでは開きません。何が原因なのか誰にもわかりませんか?

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"));
    }
});

ここでバグに気づきましたか?

各ボタンに 1 つのアクションを割り当てることを意図していましたが、myButton2 の定義後に不注意にコピー アンド ペーストを行ったため、誤って 2 つ目のアクションを myButton1 に割り当てました。

ここで何が起こるかというと、ユーザーが myButton1 をクリックすると、最初のアクションが呼び出されて www.google.com が表示されたブラウザが表示され、次に 2 番目のアクションが呼び出されて、そのウィンドウに別のタブが表示されるか、別のウィンドウ全体(ブラウザの設定によって異なります)。

于 2012-10-11T15:57:25.300 に答える