我想在JTable中創建自定義單元格。我使用自定義渲染器並返回JPanel對象。 它有效,但有一個問題。在程序運行時,JPanel使用paintComponent()方法繪製自己。在每個「嘀嗒」(通常每100ms)面板變得越來越寬(我想要調整它的大小和創建滾動條)我嘗試了幾種放置ScrollPane的方法,但是它們都沒有工作基本上,我想要類似Java中的線程視圖VisualVM。任何想法?JTable單元格中的可滾動JPanel
回答
將滾動窗格放在普通表格單元格內是很困難的工作,因爲只有一個組件用於渲染表格中的所有單元格。可能會刪除JTable並將大量組件放在普通的JPanel中佈局
如果你仍然想使用JTable中:?
每滾動窗格中含有特殊的JViewport控制此JViewport的控制其實也都滾動WO rk和JSrollPane本身只使用滾動條進行佈局。由於單個視口用於所有單元格,因此必須存儲此視口滾動位置的某個位置,併爲每個繪畫單元格恢復它(在getCellRenderer方法上)。但是JSrollPane需要繁重的佈局工作,所以這是非常緩慢的解決方案。
可能是最優選的解決方案:覆蓋您JPane單元格渲染器的繪製方法,並且此繪圖方法必須以適當的滾動偏移量創建子圖形(Graphics.create())。滾動偏移量數據必須存儲在某處(例如,在表模型中)。當用戶單擊單元格時,JTable將開始單元格編輯,並安裝單元格編輯器。這必須是特殊的單元格編輯器,包含滾動窗格本身。用戶滾動此控件(無需特殊支持)並完成單元格編輯,您必須將滾動位置保存爲模型(在stopCellEditing()函數中)。然後單元格渲染繪製本身,並在繪製方法獲取內容滾動偏移模型。用戶看到滾動的單元格。您也可以將JScrollBar放入單元格渲染中,這樣用戶可以看到滾動位置(但它需要特殊的支持)。您也可以使用JViewport本身來完成所有的痛苦工作,但控制難以理解。我沒有看到任何麻煩機智在單元格編輯器中使用滾動褲,所以它必須工作。無論如何,這是巨大的工作。
因此,您已經設置了自定義表格單元格渲染器,並且我假設此渲染器是JPanel
上的JScrollPane
視圖。在調用validate()
觸發佈局更新之前,您可能需要在面板上調用setPreferredSize()
,並在面板上調用setPreferredSize()
和/或setSize()
(或任何內部元素在滾動窗格中查看)。
- 1. JTable單元格中的JPanel
- 2. JTable中的可滾動單元格
- 3. 在Swing中滾動JTable單元格
- 4. JTable單元格內的滾動條
- 5. JTable單元格:JScrollPane不滾動
- 6. CardLayout中的可滾動JPanel?
- 7. JTable單元格中的JComboBox
- 8. 將JToggleButton和JPanel放在一個JTable單元格中
- 9. 在java中可滾動JPanel
- 10. JPanel的滾動窗格?
- 11. 使JTable可滾動
- 12. JTable在JPanel中不可見
- 13. UITableView按單元格滾動單元格
- 14. 如何將JPanel分配給JTable單元格?
- 15. DefaultTableModel使單元格不可編輯JTable
- 16. 顯示JTable中滾動時的JPanel大小爲全
- 17. 單元格的修改,JTable
- 18. JTable單元格內的JComboBox
- 19. 如何讓JPanel可滾動?
- 20. 如何使Java中的JPanel可滾動?
- 21. 使JTable中的單元格可編輯 - 單元格的默認值
- 22. JTable中列中的顏色單元格
- 23. 動態添加jtable到jpanel
- 24. 對齊JTable中單元格的值?
- 25. 更改JTable中單元格的顏色
- 26. JTable單元格中的圖像顯示
- 27. Swing中的多單元格選擇JTable
- 28. JTable中的單元格驗證
- 29. 刪除jtable中的單元格邊框
- 30. JTable單元格中的多個JCheckBoxes
參見http://stackoverflow.com/questions/4167452 – trashgod 2010-12-20 18:33:13