2009-10-03 83 views
1

我要實現以下功能,但我很困惑,如果它在Java中是可能的。如果是,比如何?請幫助:添加文本和圖標(MouseListener的)到JTable中列

我想創建一個JTable類型的表,其中表的第一行包含列名稱和每列中的圖標,即第一行的每個單元格中的圖標。點擊該圖標應該會導致從表中刪除該列(可能使用MouseListener ??)。

我發現它描述添加文本和圖標(MouseListener的)到小區許多解決方案,我可以添加按鈕,在JTable中單元格,但沒有。請看看你是否可以提供幫助,並且非常感謝你的閱讀。

+1

你可能會覺得這有幫助:http://www.exampledepot.com/egs/javax.swing.table/pkg.html – 2009-10-03 04:40:27

回答

3

您可以創建擴展JLabel定製TableCellRenderer。此JLabel可以與圖標(JLabel可以顯示圖標,向右或向左的文本)來創建。你會希望getTableCellRendererComponent測試被渲染的行是否是第一個,如果是,設置圖標,否則不要。

爲清除行動,你可以在表中添加MouseListener,和處理mouseClicked方法時,你可以發現,被​​點擊了由從mouseEvent.getX()mouseEvent.getY()創建Point測試rowAtPointcolumnAtPoint細胞。如果確定單擊圖標的第一行,則可以從列模型中刪除列。

如果第一排,你實際上意味着表頭,您可以創建爲JTableHeader同一渲染器,並設置MouseListener該組件上。

2

好了,我不明白你的問題。

我想創建一個JTable一種 表,其中表的第一行包含 列名和圖標

你的意思是表頭,像通過顯示列排序的工作方式名稱和分類方向?

如果是這樣,那麼您使用表頭的自定義渲染器,並添加一個MouseListener到頭以確定哪個列被點擊。你應該能夠自定義Default Table Header Renderer做你想做的。

還是你的意思表中的數據的第一行。如果是這樣,那麼您仍然需要使用自定義渲染器,但是這次您將MouseListener添加到表格而不是表格標題。

在這兩種情況下,您都可以使用TableColumnModel.removeColumn()方法從表格視圖中刪除列。