我想創建一個透明的JTable。表本身並沒有強加太多的問題,我在JTable上實現了TableModel和TableCellRenderer,並設置了setOpaque(false),JScrollPane和JScrollPane的封閉JScrollPane和ViewPort。如何使JTable的標頭透明
該表現在正確地繪製標題,因爲它位於JScrollPane中,所以我設置了自己的TableCellRenderer以使用getTableHeader().setDefaultRenderer(new TaskTableHeaderRenderer());
來呈現標題。我希望這也是透明的,只需使用JLabel的文本即可。但儘可能地嘗試,我無法得到它。渲染器肯定提供了一個透明的組件(我甚至試圖僅僅使用一個setapaque(false)的JPanel),我甚至在JTableHeader上嘗試了setOpaque(false),併爲所有有問題的組件設置了透明背景顏色。似乎沒有任何幫助。
我使用的LookAndFeel是PlasticGPLookAndFeel by JGoodies,但我試過金屬和Windows外觀&感覺實現也無濟於事。此外,調試表明PlasticXPLookAndFeel使用BasicTableHeaderUI而不進行子類化。
那麼我怎樣才能實現透明表頭?
嗯,這 「paintBackground法」 你在說什麼以後?我已經檢查了整個繼承樹,但沒有一個類似乎有這個名字的方法。 – 2011-03-26 11:47:25
基本上你有3種方法:paintBorder(),paintComponent()和paintChildren()。 [遺憾的是paintBackground(),內存錯誤服務於我]嘗試使用代表表頭的組件的paintComponent/paintBorder玩... – iluxa 2011-03-28 17:05:28