我希望每个 JButton 也有一个与之关联的数字或 ID。这就是为什么我决定扩展 JButton 类来创建一个 SuperJButton 类。
如何在单击此按钮时生成的操作事件中包含 id/数字的值,以便响应此操作的类可以访问 id ?
另一种不需要子分类的替代方法是用于JComponent.putClientProperty(Object key, Object value)
存储与您的按钮关联的 ID。
可以使用getClientProperty(Object key)
.
public void actionPerformed(ActionEvent e)
{
JComponent comp = (JComponent)e.getSource();
KeyObject kObj = (KeyObject)comp.getClientProperty("button.id");
}
这可能会更灵活一些,因为您可以将此 ID 附加到每个按钮,而无需使用特定于应用程序的代码,例如,当使用 GUI 构建器时,更改按钮的创建代码有点复杂,或者当您需要使用已经存在的组件。
您不必更改 Action 事件。您可以这样做,
SuperJButton jButton = (SuperJButton) actionEvent.getSource();
jButton.getId()
jButton.getNumber()
从MVC
观点来看:JButton
是一个view
,而JButton
类不是更好的地方id
。id 更好的地方是在你自己的ButtonModel
实现中。