[英]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.