我想显示一个带有自定义标题渲染器(旋转的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/

10-14 10:20
查看更多