我想创建一个透明的JTable。表本身并没有强加太多的问题,我在JTable上实现了TableModel和TableCellRenderer,并设置了setOpaque(false),JScrollPane和JScrollPane的封闭JScrollPane和ViewPort。如何使JTable的标头透明
该表现在正确地绘制标题,因为它位于JScrollPane中,所以我设置了自己的TableCellRenderer以使用getTableHeader().setDefaultRenderer(new TaskTableHeaderRenderer());
来呈现标题。我希望这也是透明的,只需使用JLabel的文本即可。但尽可能地尝试,我无法得到它。渲染器肯定提供了一个透明的组件(我甚至试图仅仅使用一个setapaque(false)的JPanel),我甚至在JTableHeader上尝试了setOpaque(false),并为所有有问题的组件设置了透明背景颜色。似乎没有任何帮助。
我使用的LookAndFeel是PlasticGPLookAndFeel by JGoodies,但我试过金属和Windows外观&感觉实现也无济于事。此外,调试表明PlasticXPLookAndFeel使用BasicTableHeaderUI而不进行子类化。
那么我怎样才能实现透明表头?
嗯,这 “paintBackground法” 你在说什么以后?我已经检查了整个继承树,但没有一个类似乎有这个名字的方法。 – 2011-03-26 11:47:25
基本上你有3种方法:paintBorder(),paintComponent()和paintChildren()。 [遗憾的是paintBackground(),内存错误服务于我]尝试使用代表表头的组件的paintComponent/paintBorder玩... – iluxa 2011-03-28 17:05:28