Ticket #14177

ActionPerformed is executed two times when a MenuItem is selected.
Open Date: 2008-11-30 21:45 Last Update: 2008-12-02 00:22

Reporter:
Owner:
Type:
Status:
Open [Owner assigned]
Component:
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

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 History (3/4 Histories)

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

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

2008-12-02 00:22 Updated by: freebeans
Comment

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

2008-12-02 21:53 Updated by: None
Comment

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

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login