Ticket #14177

ActionPerformed is executed two times when a MenuItem is selected.
Eröffnet am: 2008-11-30 21:45 Letztes Update: 2008-12-02 00:22

Auswertung:
Verantwortlicher:
Typ:
Status:
Offen [Owner assigned]
Komponente:
Meilenstein:
(Keine)
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Keine
Datei:
Keine

Details

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


Ticket-Verlauf (3/4 Historien)

2008-11-30 21:45 Aktualisiert von: freebeans
  • New Ticket "ActionPerformed is executed two times when a MenuItem is selected." created
2008-12-01 08:37 Aktualisiert von: freebeans
Kommentar

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

2008-12-02 00:22 Aktualisiert von: freebeans
Kommentar

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

2008-12-02 21:53 Aktualisiert von: None
Kommentar

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

Dateianhangliste

Keine Anhänge

Bearbeiten

Please login to add comment to this ticket » Anmelden