簡體   English   中英

為什么我的組件列不突出顯示?

[英]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

然后在您的JTableTableModel中覆蓋getColumnClass(...)方法以返回Icon.class用於第二列,並且表格將使用默認的圖標渲染器。 請參閱: https://stackoverflow.com/a/5615516/131872

如果您真的需要自定義渲染器,那么您應該從默認渲染器擴展,因為它會自動提供對突出顯示和關注行和單元格的支持。

如果您實現 TableCellRenderer,那么您負責根據傳遞給該方法的參數在渲染器中突出顯示和焦點繪制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM