我想显示一个带有自定义标题渲染器的JTable(旋转的2行文字)。
用于设置自定义渲染器的伪代码:
table.getColumnModel().getColumn(0..colCount).setHeaderRenderer(new TableCellHeaderRendererGraphics());
课程TableCellHeaderRendererGraphics
扩展DefaultTableCellRenderer
。
这里重写了方法paint(Graphics g)
和getPreferredSize()
。在paint
我用文本,字体,Graphics2D和AffineTransform做一些事情来旋转文本并以粗体和普通显示两行。
问题是在getPreferredSize()
之前调用paint(Graphics g)
。
问:在我有机会仅使用Graphics
中引用的paint()
计算尺寸之前,我怎样才能返回首选尺寸?
答案 0 :(得分:0)
我能回答我自己的问题:
可以在没有Graphics
上下文的情况下计算所需矩形的大小。使用组件(在本例中为JLabel
)方法getFontMetrics()
。
在此课程中使用stringWidth(txt)
来获取文本的宽度。
可以使用getFontMetrics().getHeight(),.getAscent(),.getDescent()
来请求文本的高度。