1

我希望每个 JButton 也有一个与之关联的数字或 ID。这就是为什么我决定扩展 JButton 类来创建一个 SuperJButton 类。

如何在单击此按钮时生成的操作事件中包含 id/数字的值,以便响应此操作的类可以访问 id ?

4

3 回答 3

3

另一种不需要子分类的替代方法是用于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 构建器时,更改按钮的创建代码有点复杂,或者当您需要使用已经存在的组件。

于 2013-04-01T09:31:19.380 回答
2

您不必更改 Action 事件。您可以这样做,

SuperJButton jButton = (SuperJButton) actionEvent.getSource();
jButton.getId() 
jButton.getNumber()
于 2013-04-01T09:29:21.497 回答
1

MVC观点来看:JButton是一个view,而JButton类不是更好的地方id。id 更好的地方是在你自己的ButtonModel实现中。

于 2013-04-01T09:32:48.433 回答