繁体   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