更新JMenu显示名称

时间:2011-11-15 21:56:22

标签: java swing user-interface model

所以我有一个带有几个子菜单的JMenu。这些菜单的名称是通过获取4个玩家中的1个的名称来设置的。我向JMenu添加了一个MenuListener,使用

更新这些名称
menu.setName(player.getName()); 

但是,名称正在更改,但更新未显示在菜单中。如何让菜单更新它的显示?

editMenu.addMenuListener(new MenuListener() {

       public void menuSelected(MenuEvent e) {
          updateMenu();       
       }

       public void menuDeselected(MenuEvent e) {
       }

       public void menuCanceled(MenuEvent e) {
       } 
});

和updateMenu方法:

public void updateMenu()
{
    partOneMenu.setName(Participant1.getName());
    partTwoMenu.setName(Participant2.getName());
    partThreeMenu.setName(Participant3.getName());
    partFourMenu.setName(Participant4.getName());

    partOneMenu.revalidate();

    partTwoMenu.revalidate();
    partThreeMenu.revalidate();
    partFourMenu.revalidate();

    System.out.println(partOneMenu.getName());
}

print语句显示名称已更改。

1 个答案:

答案 0 :(得分:5)

如果我理解你想要什么(快照可能有用),那么你应该使用menu.setText("player1")

setName(string)不显示,请参阅here