我無法理解爲什麼會發生這種情況。我一直在網上尋找類似的問題,但找不到一個。在JTable上調用setRowHeight立即重置int方法參數
for (int row = 0; row < getRowCount(); row++) {
int rowHeight = this.getRowHeight();
for (int col = 0; col < this.getColumnCount(); col++) {
Component pRenderer = getCellRenderer(row, col);
// Assume this is a dimension of 120x120
Dimension pRendererSize = pRenderer.getPreferredSize();
if (pRendererSize.height > rowHeight)
rowHeight = pRendererSize.height;
}
this.setRowHeight(row, rowHeight);
}
我的JTable中行的默認高度是16像素。如果我撥打電話:
//This returns 16 initially
this.getRowHeight();
我正在逐步調試我的調試器中的代碼。在行setRowHeight中,參數rowHeight是120,因此我將行的rowHeight設置爲120像素。我根本沒有重載這個方法,這是setRowHeight的JTable實現。
接下來發生的事情真的很可怕。在遍歷這個方法之後,this.getRowHeight()不僅返回了16個像素,rowHeight的值立即變爲16個像素。
當然,表格也不正確。這似乎違反我的int值類型參數將通過傳遞給方法而改變的意義。這根本不應該改變rowHeight變量。你認爲我的調試器是在舊代碼上運行,是壞了還是這可能是時代的終結?
發佈您的SSCCE(http://sscce.org),證明問題。 – camickr 2011-05-12 16:45:07
多一點信息,我試圖在顯示窗口中非常簡單地執行此操作,同時仍然在調試器中的此方法內,並且此行爲沒有發生,但是我的表上的行高仍然是16像素。 – 2011-05-12 16:45:35
我沒有看到你的代碼有問題,它看起來非常類似於我的。也許你有兩個JTable實例(一個在內存中,一個在幀中添加),並且你正在更新內存中不會影響幀的行高的行高。沒有SSCCE,我們不僅可以猜測。 – camickr 2011-05-12 16:55:12