我想用自定義標題渲染器(旋轉的2行文本)顯示JTable。
Paint()在getPreferredSize()後調用
用於設置自定義呈現僞代碼:
table.getColumnModel().getColumn(0..colCount).setHeaderRenderer(new TableCellHeaderRendererGraphics());
類TableCellHeaderRendererGraphics
擴展DefaultTableCellRenderer
。
這裏的方法paint(Graphics g)
和getPreferredSize()
被覆蓋。在paint
我做了一些與文本,字體,Graphics2D和AffineTransform東西旋轉文本,並顯示粗體和平原兩行。
問題是在paint(Graphics g)
之前調用getPreferredSize()
。
問:在我有機會計算尺寸Graphics
僅在paint()
中引用之前,我如何返回首選尺寸?
你不能:P,這就是API的工作原理。你可以直接詢問組件的'FontMetrics',看看它是否有效 – MadProgrammer 2015-04-02 07:28:37
我認爲我可以在這裏看到一個設計缺陷 - 繪製它時計算組件大小?當你要畫畫時,你現在應該已經畫好了什麼,所以你必須知道所有的界限。你爲什麼不用專門的方法來計算你的大小,比如get * size()。您可以始終實現自己的佈局管理器,僅用於此單個組件。 – Antoniossss 2015-04-02 08:56:36
@MadProgrammer:thx,我想我會在你的小費後繼續工作。第一次測試給了我希望。 JLabel FontMetrics可以在沒有Graphics2D的情況下計算文本長度,高度可以是固定值 - 適用於我。 – chris 2015-04-02 09:05:40