2011-09-07 36 views
1

但是,我正在偵聽TabelModel的tableChanged()事件,此事件在JTable實際更新/將行添加到GUI之前觸發。我試圖重新調整表格高度,需要知道JTable何時完成添加並顯示行&它的內容。如何在JTable GUI更新後獲取事件?

或者是否有可能使JTable將行Height設置爲每行中組件的大小?我試圖在getCellRenderer中這樣做,但這隻會導致發生tableChanged事件的無限循環。

回答

4

將代碼包裝在SwingUtilities.invokeLater(...)的TableModelListener中。這就是將代碼添加到EDT的末尾,以便表執行時應該完成表更新。

+0

這可行,但是在添加行獲取行和調整行大小之間存在明顯的延遲。有沒有辦法在單元格渲染過程中設置行高而不讓JTable的setRowHeight(row,height)函數觸發tablechanged事件? – lanthica

+0

當你這樣做時,不應該有延遲(毫秒)。發佈證明問題的SSCCE。你不應該改變渲染中的行高(或任何表屬性)。假設你有一個像「添加行」之類的按鈕,所以無論何時添加行時,你都應該調整行高。然後你可以擺脫TableModelListener。 – camickr

+0

啊,你是正確的我的壞我有一個Thread.sleep我在嘗試的東西!非常感謝! – lanthica