问题标签 [tablecellrenderer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1820 浏览

java - 允许用户调整 JTable 的列大小

我正在创建一个动态改变其宽度的表格。我也按时间添加列。我已将此表限制在滚动窗格上。在这里,我在 JTable 中将自动调整大小设置为 false(否则它将从头开始填充整个区域)。

我也在使用 cellrenderer 向单元格添加图像。现在我需要允许用户调整这个表列的大小。

任何想法?

0 投票
5 回答
116456 浏览

java - 更改 JTable 中行的背景颜色

我有一个 3 列的 JTable。我已经TableCellRenderer为所有 3 列设置了这样的(可能不是很有效?)。

为每行getTableCellRendererComponent()返回一个具有随机背景颜色的组件。
如何在程序运行时将背景更改为其他随机颜色?

0 投票
1 回答
1079 浏览

swing - 使用单元格渲染器后禁用行选择功能

我很清楚做错了什么。我的猜测是组件,但这是问题所在。这是我的单元格渲染器:

这就是我在面板中设置的方式:

问题是当我设置这个渲染器时,行变得不可选择。我应该使用不同的组件来显示我需要显示的内容吗?基本上我将 0/1 值显示为 No/Yes 值。

0 投票
4 回答
3128 浏览

java - 为什么我的 JTable CellRenderer 一直在运行?

//新手问题

我有一个带有几乎基本单元格渲染器的 JTable(它为线条着色不同)。我注意到我的单元格渲染器一直在为屏幕上显示的线条运行,即使我没有对表格做任何事情。

这就是它应该的样子吗?它不应该将每个单元格渲染一次,就是这样吗?我怎样才能让它停止,并且只重新计算变化?

0 投票
1 回答
1835 浏览

swing - Swing:表格单元格渲染不适用于 JXTable?

我试图根据某些行项的值覆盖 JXTable 的突出显示颜色。这是一个示例,如果行项目值具有 ,则突出显示为绿色getNumber() % 2 == 0

它适用于 JTable,但对于 JXTable,除非选择了相关行,否则表格单元格渲染器似乎不起作用。为什么它会这样,我该如何解决?

在此处输入图像描述 在此处输入图像描述

0 投票
3 回答
4155 浏览

java - 列标题中带有“关闭”按钮的 JTable

我正在尝试创建一个带有自定义列标题的表。我希望列标题包含一个用户可以单击的按钮。该按钮的功能是从表中删除列。本质上,我正在尝试构建这样的东西

这是我的代码:

默认情况下,如果我理解正确,JTable 使用 JLabel 来呈现列标题。我的想法是使用自定义的 TableCellRenderer 实现,并用几个组件构建我自己的列标题,即包含 JLabel 和 JButton 的 JPanel。我在 getTableCellRendererComponent(...) 函数中构建并返回它。

从视觉上看,这是可行的。问题是我无法检测到按钮上的鼠标点击(或者,就此而言,在持有它的面板上)。简单地向按钮添加 MouseListener 是行不通的。事件永远不会到达它。

我在网上找到了几个类似的东西,但它们没有实现我需要的功能。

首先,这里有一个如何将 JCheckBox 放入标头的示例:

问题在于整个标题都是复选框。单击复选框或相关标签会产生相同的效果。因此,无法对列进行排序。我想这样做,以便单击标签对列进行排序,然后单击关闭按钮从表中删除该列。换句话说,标题需要有两个独立的区域和独立的鼠标事件处理程序。

我在这里找到了另一个例子:

这包括将 JButtons 放入表格的单元格中,然后检测表格本身的鼠标点击,计算发生点击的列和行,并将事件分派给适当的按钮。

这也有几个问题。首先,按钮在单元格中,而不是在标题中。其次,这只是一个组件,而不是 JPanel 中的几个组件。虽然我从这个例子中得到了调度事件的想法,但我不能让它适用于复合组件。

我尝试了另一种方法。我推断,如果我可以获得关闭按钮的坐标,那么知道鼠标点击的坐标,我就可以计算出哪个按钮被点击,并适当地调度事件。我进行了几次测试,发现表头内的组件实际上并不位于屏幕上。

我在我的主(公共)类中添加了一个静态 JButton 变量,并使实现 TableCellRenderer 的类成为主类的内部类。在 getTableCellRendererComponent(...) 中,在返回之前,我将刚刚创建的 JButton 分配给该静态变量。这样一来,我就可以掌握它,可以这么说。然后,我主要尝试使用该静态变量获取 getX()、getY()、getWidth()、getHeight() 和 getLocationOnScreen()。X、Y、宽度和高度都返回 0。GetLocationOnScreen() 使程序崩溃,说该组件必须出现在屏幕上才能使此功能起作用。

代码如下所示:

“类CustomColumnCellRenderer实现TableCellRenderer”成为CustomColumnHeadersTable的内部类。为此,我必须放弃 CustomColumnCellRenderer 中的静态变量,所以我没有为图标或 url 或类似的东西而烦恼。我没有使用带有图标的按钮,而是使用了一个简单的按钮,上面写着“按钮”......

接下来,在 getTableCellRendererComponent(...) 中,就在 return 语句之前,我做了

最后,在 main() 内部,我尝试这样做:

输出如下所示:

换句话说,按钮的所有维度都是 0,根据 Java,它实际上并不位于屏幕上(即使我可以看到它......)。调用 getLocationOnScreen() 会使程序崩溃。

所以,如果可以的话,请帮忙。也许有人知道如何做到这一点。也许你可以建议一些其他的方法来尝试。或者,也许你知道这根本不可能……

谢谢您的帮助。

0 投票
2 回答
2249 浏览

java - TableCellRenderer 选中单元格问题

我想实现一个 JTable 组件的 tablecellrenderer,它应该根据单元格数据显示不同的颜色。我知道了,但我无法更改所选单元格的颜色。我试图这样做:

但它不起作用:S .. 我看不到问题,因为当我单击一个单元格时,JTable 没有显示任何不同。

0 投票
2 回答
758 浏览

java - 根据前一行 JXTreeTable 中的值绘制单元格某些颜色

我有一个带有自定义单元格渲染器的 JXTreeTable。当一行中的字段与前一行中的字段不同时,我试图让行的背景颜色发生变化。例如,该行包含“1”作为 ID。如果前一行也包含“1”,我希望这一行被涂成相同的颜色。如果前一个是“2”,我希望这一行被涂上另一种颜色。目的是对具有相同 ID 的行进行分组。

我最初是存储先前绘制的颜色并使用它(连同值)来确定要绘制当前行的颜色。然而,这只在从上到下完全绘制表格时才有效。我目前正在获取前几行的背景颜色并使用它来确定,但是如果选择了该行或以其他方式不同,这会弄乱颜色。有一个更好的方法吗?

0 投票
3 回答
13242 浏览

java - 为什么我的 Java 自定义单元格渲染器在选择行/单元格时不显示突出显示?

我有一个用于单元格的自定义单元格渲染器来进行自动换行,以便可以阅读更多内容。这是代码:

更新:单元格渲染器使用正确,但是当用户在 JTable 中选择一行时,它只显示非自定义渲染单元格的突出显示。但是,突出显示该行的所有其他单元格。这仅留下一个具有白色背景的单元格,而该行的其余部分具有蓝色(在我的情况下)作为突出显示的背景颜色。

0 投票
1 回答
2295 浏览

java - 使用具有不同根和节点类型的 TreeTable

我有以下问题:

我想要一个类似 JTeeTable 的表组件,除了根(下面的类)和树的节点不是同一类型。

例如,假设我有以下类:

尽管这两个类看起来很相似,并且可能会激发继承的动机,但它们之间并没有那种关系将其视为带有汽车零件列表的汽车或带有演员列表的电影。

两周来,我一直在想办法以视觉方式呈现上述内容。我想过使用 JTreeTable 组件,但是当子条目(节点??)与条目(叶子??)的类型相同时,我来的所有示例都是交叉显示用法。

到目前为止我的想法: 看到如果我使用一个表,列将共享相同的名称,我想我应该使用一个表和另一个表作为 TableCellRenderer,然后支持双击父行时显示/隐藏。

我不确定如何继续前进......

所以,如果你有任何想法我应该怎么做,请分享你的想法。

更新

其他方法遵循相同的方法

非常感谢所有分享他们想法的人。再次感谢垃圾神...