gpt4 book ai didi

java - 合并 JTable 中的列

转载 作者:行者123 更新时间:2023-11-29 08:18:18 24 4
gpt4 key购买 nike

我在 JTable 工作,我有这样的需求。假设有 4 列即 10,20,30,40

现在的值通常是 10-20 20-30 和 30-40所以我们很容易显示这个范围的名称。

但最近这些值开始随机出现,例如 15-25 10-25,25-30

在这种情况下,我们的 JTable 应该动态调整行的大小,使其仅代表该范围,这意味着它不应干扰现有的单元格,并且只代表偏离正常范围的行。

更准确地说,我应该能够根据单元格的内容合并和拆分单元格。

编辑:就像这样。一个人在特定时间点被分配了一项任务

10|          |20|          |30|

|----------|
|----------|

表示 10-20 和 20-30。第一行 10、20、30 是列名。第二行是表示 10-20 和 20-30 的框的图形表示。现在如果值为 15-25来了

10|          |20|          |30|

|----------| |----------|
|-----------|
|-----------|
|-------------|

|----------| |----------|

实际上,第一行和第四行之间没有间隙,只是为了表明它们是单独的单元格。现在,由于数据处于 15-25 的中间范围内,我们必须像上面那样重新对齐单元格形状,我发布了这个。

最佳答案

您可以在模型或 View 级别合并 JTable 列。这两者在 Swing 中都没有得到特别好的支持(也就是说,没有“jTable.mergeColumns(colA, colB)”内置功能)。

假设你有一个这样的表:

A  B  C
1 2 3
2 4 6

如果您在模型级别合并列 B 和 C,您的模型会说只有 2 列(A 和 B+C),并且会将第二个“B 和 C”列的值定义为,说 2+3=5 和 4+6=10;或者它可以表示此列字符串的值,例如“2 3”和“4 6”。

如果您在 View 级别合并这些列,则必须为列 B 和 C 提供您自己的 ColumnCellRenderer,并以某种方式避免绘制网格线。我不推荐这种方法。

最后的选择是同时更改模型和 View :您可以修复 akf 指向的代码(压缩版本可以从 http://www.codeguru.com/java/articles/139.shtml 下载),方法是将AttributiveCellTableModelsetDataVector() 方法如下:

  public void setDataVector(Vector newData, Vector columnNames) {
if (newData == null)
throw new IllegalArgumentException("setDataVector() - Null parameter");
dataVector = newData;
columnIdentifiers = new Vector(columnNames);

在 jdk6 下对我来说很好

关于java - 合并 JTable 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2584173/

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