gpt4 book ai didi

java - JPopupMenu 不显示 JMenuItem 的文本

转载 作者:行者123 更新时间:2023-12-01 17:00:45 24 4
gpt4 key购买 nike

我正在尝试创建一个 JPopupMenu,但由于某种原因,它没有显示我在 JMenuItems 上设置的文本。菜单本身可以工作,其中有菜单项并且它们有响应,但文本没有显示。我正在创建这样的菜单:

private void createPopupMenu() {
this.popupMenu = new JPopupMenu();
this.addMouseListener(new PopupListener(this));
JMenuItem addPlaceMenuItem = new JMenuItem(SketchPad.ADD_PLACE_POPUP_TEXT);
addPlaceMenuItem.setAction(new PopupAction(ActionType.AddPlace));
this.popupMenu.add(addPlaceMenuItem);
JMenuItem addTransitionMenuItem = new JMenuItem(SketchPad.ADD_TRANSITION_POPUP_TEXT);
addTransitionMenuItem.setAction(new PopupAction(ActionType.AddTransition));
this.popupMenu.add(addTransitionMenuItem);
}

如果重要的话,这里是 PopupListener:

class PopupListener extends MouseAdapter {

SketchPad pad;

public PopupListener(SketchPad pad)
{
this.pad = pad;
}

public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}

public void mouseReleased(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1)
{
this.pad.getController().deselectAllNodes();
}
else
{
maybeShowPopup(e);
}
}

private void maybeShowPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
pad.popupPosition = new Point(e.getX(), e.getY());
pad.popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
}

我在这里缺少什么?

最佳答案

but for some reason, it doesn't show the text I've set on the JMenuItems.

addPlaceMenuItem.setAction(new PopupAction(ActionType.AddPlace));

setAction(...) 方法使用操作的属性重置菜单项的属性。因此,您需要确保设置 ActionNAME 属性来设置菜单项的文本。

因此,在您的情况下,NAME 属性的值应该是:

SketchPad.ADD_PLACE_POPUP_TEXT

或者另一种方法是在设置操作后重置菜单项的文本

JMenuItem addPlaceMenuItem = new JMenuItem( new PopupAction(ActionType.AddPlace) );
addPlaceMenuItem.setText(SketchPad.ADD_PLACE_POPUP_TEXT);

关于java - JPopupMenu 不显示 JMenuItem 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com