我正在構建一個自定義的swing組件(更像是一個實際的思想實驗)。自定義swing組件:重繪問題()
我遇到了重新繪製的問題。我的組件具有jtree
,一個jtable
,然後就是完全自定義的畫的一部分(希望結束了相當MS項目式的ganttview)
的具體問題是,當JTree的擴大,表和甘特視圖應更新以反映新擴展的treenode下的新子項目。他們這樣做,但尺寸不更新,所以表格不顯示額外的行,而且我的gannt顯示也沒有使用完整的高度。
奇怪的是,如果我觸摸jframe
上的窗口句柄(所以即使是1px調整大小) - 這似乎強制完全刷新,然後組件顯示正常,中間的表格和gannt正確填滿顯示屏。
如果我不做調整大小,那麼當樹中的節點展開/摺疊時調用repaint,因爲我看到ganttview更新,但它看起來並沒有展開佔據整個高度屏幕。
我已經在下面的屏幕截圖中顯示了resize()後的正確顯示,下半部分是我看到如果我不擴大節點而不進行調整大小。
我的斷言是,組件知道如何正確重繪()它本身,因爲它在調整大小上做了正確的事情,但是這必須觸發一個特殊事件來強制更新。我嘗試過各種組合update
(),invalidate
(),repaint
(),但似乎無法模擬父窗體調整大小時發生的完整repaint
()。
感謝,王牌
很多謝謝,這樣做的伎倆 – phatmanace 2011-01-27 22:56:02