更新JMenu显示名称

Joh*_*ers 6 java user-interface swing model

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

menu.setName(player.getName()); 
Run Code Online (Sandbox Code Playgroud)

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

editMenu.addMenuListener(new MenuListener() {

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

       public void menuDeselected(MenuEvent e) {
       }

       public void menuCanceled(MenuEvent e) {
       } 
});
Run Code Online (Sandbox Code Playgroud)

和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());
}
Run Code Online (Sandbox Code Playgroud)

print语句显示名称已更改.

yai*_*air 5

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

setName(string)不是为了展示,请看这里.