在getPreferredSize()之后调用Paint()

时间:2015-04-02 07:26:20

标签: java swing

我想显示一个带有自定义标题渲染器的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()计算尺寸之前,我怎样才能返回首选尺寸?

1 个答案:

答案 0 :(得分:0)

我能回答我自己的问题:

可以在没有Graphics上下文的情况下计算所需矩形的大小。使用组件(在本例中为JLabel)方法getFontMetrics()
在此课程中使用stringWidth(txt)来获取文本的宽度。
可以使用getFontMetrics().getHeight(),.getAscent(),.getDescent()来请求文本的高度。