现在我正在使用 JTable 来完成我正在做的事情。在浏览了 Java API 和各种 Web 资源之后,我认为 JTable 不再能解决这个问题了。我正在寻找的是一个可以指定非常严格的选择程序的表格。我希望不仅能够选择行和列,而且还能够选择对角线方向的单元格。更重要的是,我需要能够指定在另一个单元格中时可以选择哪些单元格的整体能力。
例如,如果我有一个 10x10 的表格,并且位于单元格 (4, 3) [(行,列)] 中,我希望能够说,好的,您可以从此处选择以下间隔:
- (4, 3) 至 (4, 10)
- (4, 3) 至 (4, 1)
- (4, 3) 至 (10, 4)
- (4, 3) 至 (1, 4)
- (4, 3) 到 (10, 10) [对角线]
- (4, 3) 到 (1, 1) [对角线]
- (4, 3) 到 (1, 6) [对角线]
- (4, 3) 到 (6, 1) [对角线]
关于如何做到这一点有什么想法吗?
最佳答案
听起来你并不是真的在为“ table ”建模。 (JTable 假定表语义并使用列表选择模型。)但是,如果您愿意破解 JTable 代码,我认为它与矩阵相差并不远。
另一种选择是您自己的(是的)组件:包含矩阵单元的 JPanel。所有键盘/鼠标事件处理都需要委托(delegate)给父 JPanel。我当然会建议从 JTable 克隆相关子集和设计(数据模型、选择模型等)。
所以,基本上,您需要 3 个类:
JMatrix、JMatrixModel、JMatrixSelectionModel。
JMatrix 是扩展的 JPanel 及其子组件。 JMatrixSelectionModel 是将实现选择规则的类。 JMatrix 应在选择事件上调用选择模型(在矩阵单元上注册,委托(delegate)给父 JMatrix 上的处理程序)。数据模型相当简单——您甚至可以使用现有的 JTableModel。
关于java - JTable 或其他具有高级单元格选择功能的 Java 表类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817690/