“exit”菜单项响应完美,但“change name”是个问题。。我不知道怎么了,有人能帮我。。。我知道username.setusername工作正常。。因为我在另一堂课上用它,而且效果很好。只是不知道怎么了
这是密码
public class MenuBar extends JMenuBar{
// variable declaration
private JMenu menu;
private JMenuItem menuItem;
private JMenuItem changed_Name;
private JMenuItem exit;
public MenuBar(){
init();
}
private void init(){
menu = new JMenu("File");
add(menu);
changed_Name = new JMenuItem("Change Name");
changed_Name.setMnemonic(KeyEvent.VK_C);
changed_Name.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, KeyEvent.ALT_MASK));
changed_Name.getAccessibleContext().setAccessibleDescription("This Will Allow a Name Change");
menu.add(changed_Name);
exit = new JMenuItem("Exit");
menu.add(exit);
menu = new JMenu("Help");
add(menu);
menuItem = new JMenuItem("Help & Docs");
//menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, KeyEvent.CHAR_UNDEFINED) );
menuItem.getAccessibleContext().setAccessibleDescription("Get Help or View Software documents");
menu.add(menuItem);
menuItem = new JMenuItem("About");
menu.add(menuItem);
MenuHandler menuHandler = new MenuHandler();
menuItem.addActionListener(menuHandler);
exit.addActionListener(menuHandler);
}
private class MenuHandler implements ActionListener{
AgentName userName = new AgentName();
@Override
public void actionPerformed(ActionEvent e) throws UnsupportedOperationException {
Object menuItem_Command = e.getActionCommand();
if(menuItem_Command.equals("Change Name")){
userName.setUserName(userName.getUserName());
}
else if(menuItem_Command.equals("Exit")){
System.exit(0);
}
}
}
}
2条答案
按热度按时间41zrol4v1#
你从不注册
MenuHandler
与changed_name
JMenuItem
...另外,要小心,你正在重新分配任务
menuItem
多次,仅指帽子About
已在MenuHandler
例如。。。一般来说,你真的需要扩展
JMenuBar
,但只需创建一个示例并向其中添加所需的菜单您还可以考虑看看如何使用actions,actions是自包含的单元,包含它们自己的配置和操作逻辑
例如。。。
f4t66c6m2#
它可能正在工作,但是您没有得到反馈,因为您正在将名称更改为上一个名称。如果在setusername方法中添加其他值,您将看到