Java JMenuItem显示奇怪的名称

Java JMenuItem显示奇怪的名称,java,swing,jmenu,Java,Swing,Jmenu,我的投资终于成功了但是,你知道。。。现在。。。这是愚蠢的。我希望在我右键单击时,它会显示“使用项目1”或其他内容,因此我会执行以下操作: if (actItemx == "Item 1") { popup.add(dropMenuItem + " " + actItemx); // should print "Use Item 1" popup.add(cancelMenuItem); } 我觉得很好。。。但是当我

我的投资终于成功了但是,你知道。。。现在。。。这是愚蠢的。我希望在我右键单击时,它会显示“使用项目1”或其他内容,因此我会执行以下操作:

        if (actItemx == "Item 1") {
            popup.add(dropMenuItem + " " + actItemx); // should print "Use Item 1"
            popup.add(cancelMenuItem);
        }
我觉得很好。。。但是当我编译时,它很好。当我运行它时,它很好。。。但当我这么做的时候:

我发誓,因为它在CMD中正确显示,所以它在JMenu中正确显示。。。奇怪

popup.add(dropMenuItem + " " + actItemx);
该命令正在添加dropMenuItem Swing组件的toString()表示形式,加上一个空格,即actItemx的字符串值

我猜你想要:

popup.add(dropMenuItem.getText() + " " + actItemx);
该命令正在添加dropMenuItem Swing组件的toString()表示形式,加上一个空格,即actItemx的字符串值

我猜你想要:

popup.add(dropMenuItem.getText() + " " + actItemx);

比我快。另外,使用
equals()
进行字符串比较,而不是
=
。但是,更好的解决方案不是使用
dropMenuItem.setText()
并添加它,而不是使用
字符串
?我真的搞不清楚OP想要做什么。我假设存在某种父菜单项,他正试图根据父菜单项的文本创建子菜单项,因此他不想覆盖现有菜单项,而是创建一个新菜单项。我主要是想描述问题的原因,让海报决定正确的解决方案。快告诉我吧。另外,使用
equals()
进行字符串比较,而不是
=
。但是,更好的解决方案不是使用
dropMenuItem.setText()
并添加它,而不是使用
字符串
?我真的搞不清楚OP想要做什么。我假设存在某种父菜单项,他正试图根据父菜单项的文本创建子菜单项,因此他不想覆盖现有菜单项,而是创建一个新菜单项。我主要是试图描述问题的原因,让海报决定正确的解决方案。