首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jtable RowSorter图标

Jtable RowSorter图标
EN

Stack Overflow用户
提问于 2013-01-28 20:21:44
回答 1查看 1.3K关注 0票数 1

我有一个使用RowSorter (Java1.6)的JTable,我使用的是用Java1.4实现的外观,当时RowSorter还没有被添加到Java中。现在我的问题是:当我单击表标题时,表被排序,但是RosSorter图标没有出现在表头上。我需要的图标,不知何故,我不能升级现有的外观和感觉。有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-29 21:44:45

基本的方法是包装由LAF提供的渲染器,让它配置渲染组件,并根据需要另外让它绘制一个排序图标。类似于:

代码语言:javascript
复制
final TableCellRenderer r = table.getTableHeader().getDefaultRenderer();
TableCellRenderer wrapper = new TableCellRenderer() {

    @Override
    public Component getTableCellRendererComponent(JTable table,
            Object value, boolean isSelected, boolean hasFocus,
            int row, int column) {
        Component comp = r.getTableCellRendererComponent(table, value, isSelected, 
            hasFocus, row, column);
        if (comp instanceof JLabel) {
            JLabel label = (JLabel) comp;
            label.setIcon(getSortIcon(table, column));
        }
        return comp;
    }

    /**
     * Implements the logic to choose the appropriate icon.
     */
    private Icon getSortIcon(JTable table, int column) {
        SortOrder sortOrder = getColumnSortOrder(table, column);
        if (SortOrder.UNSORTED == sortOrder) {
            return null;
        }
        return SortOrder.ASCENDING == sortOrder ? ascendingIcon : descendingIcon;
    }

    private SortOrder getColumnSortOrder(JTable table, int column) {
        if (table == null || table.getRowSorter() == null) {
            return SortOrder.UNSORTED;
        }
        List<? extends SortKey> keys = table.getRowSorter().getSortKeys();
        if (keys.size() > 0) {
            SortKey key = keys.get(0);
            if (key.getColumn() == table.convertColumnIndexToModel(column)) {
                return key.getSortOrder();
            }
        }
        return SortOrder.UNSORTED;
    }

};
table.getTableHeader().setDefaultRenderer(wrapper);

这是最简单的情况,如果呈现组件是一个JLabel,并且不以某种方式使用它的图标属性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14561946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档