gpt4 book ai didi

swing - JTable 疯狂?

转载 作者:行者123 更新时间:2023-12-01 06:56:41 26 4
gpt4 key购买 nike

我一直在阅读 Swing 教程“如何使用表”,尽管它对 JTable 新手来说提供了很多信息,但我在尝试转向时立即遇到了障碍示例并自行解决。

因此,如果您希望您的 Swing 应用程序拥有漂亮的自定义表格,看起来它们是您至少要使用的几个核心类:

  • JTable
  • 表格模型
  • 表模型监听器
  • 表格模型事件
  • 表格列模型
  • TableColumnModelListener
  • TableColumnModelEvent
  1. 仅通过阅读教程和 JavaDocs,我并不清楚 TableModelTableColumnModel 之间的区别,以及它们之间的关系彼此。显然,列模型仅适用于单个列或所有列(?),而表模型更为通用。 但是它们之间有什么关系呢?每个人负责哪些领域的责任? TableModel 是否管理、控制或以某种方式包含 TableColumnModel?

  2. 与第一个问题密切相关,我在哪个模型中指定单元格编辑器和渲染器?

  3. 我假设,对于这些对象中的每一个,我都应该子类化/实现它们,以便我可以为我的项目自定义它们。 这是普遍接受的自定义表的方式(子类化 JTable“核心”类),还是这些方式足够强大以支持任何类型的表创建?

最佳答案

通常,您只需定义一个 TableModel(通过子类化 AbstractTableModel),然后使用该表模型作为参数构造一个 JTable 实例。

如果您在表模型中正确实现了 getColumnClass()JTable 将自动为您的每个列选择合适的渲染器。如果某些单元格是可编辑的(您通过覆盖表模型中的 isCellEditable() 来判断),相应的单元格编辑器也将与该列相关联。当模型发生变化时,您必须触发事件(使用 AbstractTableModel 中的一种 fireXxx 方法)。

当然,如果您的单元格中有特殊对象(即字符串、 bool 值、整数等以外的对象),您必须将渲染器关联到列(如果这些单元格中的单元格,则必须关联编辑器可编辑)。这是通过在列模型的列上设置渲染器/编辑器来完成的。不过,列模型是由 JTable 从表模型自动创建的。您通常不必自己创建一个。

因此,回答您的具体问题:

  1. TableModel 用于保存 JTable 中显示的数据。您必须自己实现。 TableColumnModel 由 JTable 自动创建,通常用于将呈现器和编辑器关联到特定列。
  2. 如果您想要第 n 列的特定渲染器,您可以从 JTable 的列模型中获取第 n 列,然后在此列上设置渲染器。
  3. 通常子类化 AbstractTableModel 就足够了。

关于swing - JTable 疯狂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7082120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com