我想显示一个带有自定义标题渲染器(旋转的2行文本)的JTable。
用于设置自定义渲染器的伪代码:
table.getColumnModel().getColumn(0..colCount).setHeaderRenderer(new TableCellHeaderRendererGraphics());
类
TableCellHeaderRendererGraphics
扩展了DefaultTableCellRenderer
。在这里,方法
paint(Graphics g)
和getPreferredSize()
被覆盖。在paint
中,我对文本,字体,Graphics2D和AffineTransform进行了一些操作,以旋转文本并以粗体和纯文本显示两行。问题是
getPreferredSize()
在paint(Graphics g)
之前被调用。问:如何获得仅使用
Graphics
引用的paint()
尺寸之前的尺寸? 最佳答案
我可以回答自己的问题:
无需Graphics
上下文就可以计算所需矩形的大小。使用组件(在这种情况下为JLabel
)方法getFontMetrics()
。在此类上,使用stringWidth(txt)
获取文本的宽度。可以使用getFontMetrics().getHeight(),.getAscent(),.getDescent()
请求文本的高度。
关于java - 在getPreferredSize()之后调用Paint(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29407304/