チケット #14177

ActionPerformed is executed two times when a MenuItem is selected.
登録: 2008-11-30 21:45 最終更新: 2008-12-02 00:22

報告者:
担当者:
チケットの種類:
状況:
オープン [担当者決定済み]
コンポーネント:
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし
ファイル:
なし

詳細

Here you have a bug test code.

import java.awt.*;
import java.awt.event.*;

public class TestBug extends Frame implements ActionListener{

    public TestBug(){
	setSize(1024,1280);
	MenuBar menuBar = new MenuBar();
	Menu menu = new Menu("Menú");
	menu.addActionListener(this);

	MenuItem mi;
	mi = new MenuItem("Exit");
	mi.addActionListener(this);
	menu.add(mi);
	mi = new MenuItem("TEST");
	mi.addActionListener(this);
	menu.add(mi);
	menuBar.add(menu);
	setMenuBar(menuBar);
	show();
    }

    public static void main(String[] args) {
	new TestBug();
    }

    public void actionPerformed(ActionEvent e) {
	String command = e.getActionCommand();
	if (command.equals("Exit")) {
	    dispose();
	    System.exit(0);
	}else if (command.equals("TEST")) {
	    System.out.println("TEST SELECTED");
	}
    }
}


チケットの履歴 (4 件中 3 件表示)

2008-11-30 21:45 更新者: freebeans
  • 新しいチケット "ActionPerformed is executed two times when a MenuItem is selected." が作成されました
2008-12-01 08:37 更新者: freebeans
コメント

デバッグ文を入れてみたところ、WCEMenuItemPeer.postActionEvent()は1回だけ呼び出されていることが分かった。少なくとも、ネイティブライブラリからは1回しかイベントが発生していない模様。 ほかの部分に原因があると考えられる。

2008-12-02 00:22 更新者: freebeans
コメント

Menuとそこにadd()されているMenuItemの両方にActionListenerを登録した場合、イベントはMenuとMenuItemの両方から通知される。 しかし、Windows XP上のJDKだと、1回しか通知されない。 OpenJDKのソースとGNU Classpathのソースとを比べてみる。

2008-12-02 21:53 更新者: None
コメント

I think this is a bug of GNU Classpath. I reported to Bugzilla. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38372

添付ファイルリスト

添付ファイルはありません

編集

このチケットにコメントを追加するには、ログインが必要です » ログインする