使用“实例”?不止一次
Posted
技术标签:
【中文标题】使用“实例”?不止一次【英文标题】:Using a "Instance"? more than once 【发布时间】:2014-05-30 02:18:49 【问题描述】:我正在制作一个清单类,其中按钮被添加到滚动窗格内的 jpanel 中,并使用 GridBagConstarints 按钮自动对齐。添加的按钮,基本上只有一个名为 randomButton 的类,它扩展了 JButton。大小、颜色、文本等都在这个类中定义。然后在我使用的主类中:
randomButton b = new randomButton();
然后我使用:
panelName.add(b, gridBagConstrainntsName);
我基本上想多次运行这行代码,但问题是它删除了前一个按钮,我猜是因为它是同一个东西,是同一个“实例”?随机按钮。我可以简单地制作很多按钮,然后添加它,它很好,但如果我尝试添加 2 个相同的按钮,我会收到错误。我尝试将 b = 设置为另一个 JButton,但它仍然只使用一个。有什么解决办法吗?
【问题讨论】:
Any solutions?
- 正如你已经说过的,“我可以简单地制作许多按钮”。您没有理由不能这样做,因为您始终可以在所有按钮之间共享一个 ActionListener,因此您不必创建多个侦听器。
注意:Swing 已过时。如果仍然可能,请尝试用 JavaFX 替换它。
【参考方案1】:
有什么解决办法吗?
正如您已经说过的,“我可以简单地制作许多按钮”。这可能是最简单的解决方案(不知道您的确切要求),您没有理由不能这样做,因为您始终可以在所有按钮之间共享一个 ActionListener,因此您不必创建多个侦听器。
或者对于完全不同的东西,您可以创建一个 JTable 以在网格中显示您的数据。 JTable 使用渲染器来绘制按钮,因此您只需将数据添加到 TableModel。阅读 How to Use Tables 上的 Swing 教程中的部分以获取更多信息。但这会在处理颜色和大小方面带来额外的复杂性。
【讨论】:
以上是关于使用“实例”?不止一次的主要内容,如果未能解决你的问题,请参考以下文章
RXJS combineLatest running pipe 7 次一次发射
如何使用SQL或Python在Amazon Redshift中从Amazon Snow雪花重新创建数据库表? (一次重新创建所有ot,而不是一次一遍地创建)