[英]Why my component column do not highlight?
正如您從圖像中看到的那樣,我的 jtable 在框架中有兩個列名和圖標。 圖標列不突出顯示。 為什么? 這是我的渲染器。 我的圖標是帶有綠色矩形的 JComponent Object
public class myRenderer extends JPanel implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col)
{
if (hasFocus)
setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
else
setBorder(null);
return (Component) value;
}
};
TableCellRenderer
的文檔:
hasFocus - 如果為
true
,則適當地渲染單元格。 例如,在單元格上放置一個特殊的邊框,如果單元格可以編輯,則以用於指示編輯的顏色進行渲染
可能圖標列不可編輯和/或單元格沒有焦點。
(使用調試器或println
來查看hasFocus
是否為真)
我的圖標是帶有綠色矩形的 JComponent Object
TableModel
不應將組件存儲為數據。 model 應該存儲數據,然后渲染數據。
如果要顯示矩形,則將自定義Icon
添加到 model。 有關自定義圖標的示例,請參閱: https://stackoverflow.com/a/32700526/131872
然后在您的JTable
或TableModel
中覆蓋getColumnClass(...)
方法以返回Icon.class
用於第二列,並且表格將使用默認的圖標渲染器。 請參閱: https://stackoverflow.com/a/5615516/131872
如果您真的需要自定義渲染器,那么您應該從默認渲染器擴展,因為它會自動提供對突出顯示和關注行和單元格的支持。
如果您實現 TableCellRenderer,那么您負責根據傳遞給該方法的參數在渲染器中突出顯示和焦點繪制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.