繁体   English   中英

如何向 JMenuItem 添加标签?

[英]How do I add a tag to JMenuItem?

如何为我的菜单项设置标签,以便稍后在回调中使用它?

像这样的东西。 有人做过吗?

JMenuItem item = new JMenuItem(mnu.text);
item.setSomething(myTag) ???;
                    
item.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) 
   {
      start_something(myTag);
   }
});

您可以使用.setName()方法对其进行标记

    final JMenuItem item = new JMenuItem();
    item.setName("item1");

    item.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            String tag = item.getName();
        }
    });

您可以创建 Adir D 提到的子类,但您也可以向组件本身添加属性并在其他地方读取这些属性。 对于少数属性或子类不适合的情况,它可能会解决您的问题。

请参阅https://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html

放置客户端属性

public final void putClientProperty(Object key, Object value)

向该组件添加任意键/值“客户端属性”。

get/putClientProperty 方法提供对每个实例的小型哈希表的访问。 调用者可以使用 get/putClientProperty 来注释由另一个模块创建的组件。 例如,布局管理器可能会以这种方式存储每个子约束。 例如:

 componentA.putClientProperty("to the left of", componentB);

如果值为 null,则此方法将删除该属性。 通过 PropertyChange 事件报告对客户端属性的更改。 属性的名称(为了 PropertyChange 事件)是 key.toString()。

clientProperty 字典不打算支持对 JComponent 的大规模扩展,也不应该在设计新组件时将其视为子类化的替代方法。

参数:

key - 新的客户端属性键

value - 新的客户端属性值; 如果为 null 此方法将删除该属性

另见:getClientProperty(java.lang.Object), Container.addPropertyChangeListener(java.beans.PropertyChangeListener)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM