使用“实例”?不止一次

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 教程中的部分以获取更多信息。但这会在处理颜色和大小方面带来额外的复杂性。

【讨论】:

以上是关于使用“实例”?不止一次的主要内容,如果未能解决你的问题,请参考以下文章

python将列表里的字符串一次一次显示出来

流密码

RXJS combineLatest running pipe 7 次一次发射

科学在一次一次的葬礼中进步

如何使用SQL或Python在Amazon Redshift中从Amazon Snow雪花重新创建数据库表? (一次重新创建所有ot,而不是一次一遍地创建)

线程同步代码块:两个客户往一个银行存钱,每人存三十次一次存一百。 模拟银行存钱功能,时时银行现金数。