⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sortablecolumnheaderrenderer.java

📁 JR 公共类库 --Java研究组织开源子项目 本项目的发起的初衷是丰富和完善java的类库
💻 JAVA
字号:
package org.jr.swing.table;

/**
 * <p>Copyright: Copyright (c) 2002-2003</p>
 * <p>Company: JavaResearch(http://www.javaresearch.org)</p>
 * <p>最后更新日期:2003年3月4日
 * @author Cherami
 */
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;
import javax.swing.table.*;

/**
 * 带排序状态显示的表格头渲染器。
 * @since  0.5
 */

public class SortableColumnHeaderRenderer
    implements TableCellRenderer {
  TableCellRenderer render; //内部渲染器
  JPanel panel; //内部面板
  SortableLineDataTableModel model; //表格模型
  /**
   * 构造方法,根据表格模型和指定的初始渲染器构造自己的渲染效果。
   * @param model 表格模型
   * @param render 初始渲染器
   */
  public SortableColumnHeaderRenderer(SortableLineDataTableModel model,
                                      TableCellRenderer render) {
    this.model = model;
    this.render = render;
  }

  /**
   * 构造方法,根据表格模型自己的渲染效果。
   * @param model 表格模型
   */
  public SortableColumnHeaderRenderer(SortableLineDataTableModel model) {
    this(model, null);
  }

  /**
   * 经过渲染后的组件。
   * @param table 需要进行渲染的表格
   * @param value 渲染单元的值
   * @param isSelected 是否被选中
   * @param hasFocus 是否获得焦点
   * @param row 需要进行选择的行号
   * @param column 需要进行渲染的列号
   * @return 经过渲染后的组件
   */
  public Component getTableCellRendererComponent(JTable table, Object value,
                                                 boolean isSelected,
                                                 boolean hasFocus, int row,
                                                 int column) {
    panel = new JPanel();
    panel.setLayout(new BorderLayout());
    Component component;
    if (render != null) {
      component = render.getTableCellRendererComponent(table, value,
          isSelected, hasFocus, row, column);
    }
    else {
      component = new JLabel( (String) value, JLabel.CENTER);
      LookAndFeel.installColorsAndFont( (JComponent) component,
                                       "TableHeader.background",
                                       "TableHeader.foreground",
                                       "TableHeader.font");
    }
    establishComponent(component, column);
    return panel;
  }

  /**
   * 经过渲染后的组件。
   * @param component 原来未经渲染的组件
   * @param column 需要渲染的列号
   */
  private void establishComponent(Component component, int column) {
    panel.add(component, BorderLayout.CENTER);
    if (column == model.sortColumn) {
      BasicArrowButton arrowButton = new BasicArrowButton( (model.isAscent ?
          SwingConstants.NORTH : SwingConstants.SOUTH));
      panel.add(arrowButton, BorderLayout.EAST);
    }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -