亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tablesorter.java

?? 打印管理程序,測試完全通過.windows開發環境.
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/**
 * 
 */
package jp.co.ntl.swing;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;

import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.*;

/**
 * @author satoshi
 *
 */
public class TableSorter extends AbstractTableModel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

    protected TableModel tableModel;

    public static final int DESCENDING = -1;
    public static final int NOT_SORTED = 0;
    public static final int ASCENDING = 1;

    private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED);

    public static final Comparator COMPARABLE_COMAPRATOR = new Comparator() {
        public int compare(Object o1, Object o2) {
            return ((Comparable) o1).compareTo(o2);
        }
    };
    public static final Comparator LEXICAL_COMPARATOR = new Comparator() {
        public int compare(Object o1, Object o2) {
            return o1.toString().compareTo(o2.toString());
        }
    };

    private Row[] viewToModel;
    private int[] modelToView;

    private JTableHeader tableHeader;
    private MouseListener mouseListener;
    private TableModelListener tableModelListener;
    private Map columnComparators = new HashMap();
    private List sortingColumns = new ArrayList();

    public TableSorter() {
        this.mouseListener = new MouseHandler();
        this.tableModelListener = new TableModelHandler();
    }

    public TableSorter(TableModel tableModel) {
        this();
        setTableModel(tableModel);
    }

    public TableSorter(TableModel tableModel, JTableHeader tableHeader) {
        this();
        setTableHeader(tableHeader);
        setTableModel(tableModel);
    }

    private void clearSortingState() {
        viewToModel = null;
        modelToView = null;
    }

    public TableModel getTableModel() {
        return tableModel;
    }

    public void setTableModel(TableModel tableModel) {
        if (this.tableModel != null) {
            this.tableModel.removeTableModelListener(tableModelListener);
        }

        this.tableModel = tableModel;
        if (this.tableModel != null) {
            this.tableModel.addTableModelListener(tableModelListener);
        }

        clearSortingState();
        fireTableStructureChanged();
    }

    public JTableHeader getTableHeader() {
        return tableHeader;
    }

    public void setTableHeader(JTableHeader tableHeader) {
        if (this.tableHeader != null) {
            this.tableHeader.removeMouseListener(mouseListener);
            TableCellRenderer defaultRenderer = this.tableHeader.getDefaultRenderer();
            if (defaultRenderer instanceof SortableHeaderRenderer) {
                this.tableHeader.setDefaultRenderer(((SortableHeaderRenderer) defaultRenderer).tableCellRenderer);
            }
        }
        this.tableHeader = tableHeader;
        if (this.tableHeader != null) {
            this.tableHeader.addMouseListener(mouseListener);
            this.tableHeader.setDefaultRenderer(
                    new SortableHeaderRenderer(this.tableHeader.getDefaultRenderer()));
        }
    }

    public boolean isSorting() {
        return sortingColumns.size() != 0;
    }

    private Directive getDirective(int column) {
        for (int i = 0; i < sortingColumns.size(); i++) {
            Directive directive = (Directive)sortingColumns.get(i);
            if (directive.column == column) {
                return directive;
            }
        }
        return EMPTY_DIRECTIVE;
    }

    public int getSortingStatus(int column) {
        return getDirective(column).direction;
    }

    private void sortingStatusChanged() {
        clearSortingState();
        fireTableDataChanged();
        if (tableHeader != null) {
            tableHeader.repaint();
        }
    }

    public void setSortingStatus(int column, int status) {
        Directive directive = getDirective(column);
        if (directive != EMPTY_DIRECTIVE) {
            sortingColumns.remove(directive);
        }
        if (status != NOT_SORTED) {
            sortingColumns.add(new Directive(column, status));
        }
        sortingStatusChanged();
    }

    protected Icon getHeaderRendererIcon(int column, int size) {
        Directive directive = getDirective(column);
        if (directive == EMPTY_DIRECTIVE) {
            return null;
        }
        return new Arrow(directive.direction == DESCENDING, size, sortingColumns.indexOf(directive));
    }
    
    private void cancelSorting() {
        sortingColumns.clear();
        sortingStatusChanged();
    }

    public void setColumnComparator(Class type, Comparator comparator) {
        if (comparator == null) {
            columnComparators.remove(type);
        } else {
            columnComparators.put(type, comparator);
        }
    }

    protected Comparator getComparator(int column) {
        Class columnType = tableModel.getColumnClass(column);
        Comparator comparator = (Comparator) columnComparators.get(columnType);
        if (comparator != null) {
            return comparator;
        }
        if (Comparable.class.isAssignableFrom(columnType)) {
            return COMPARABLE_COMAPRATOR;
        }
        return LEXICAL_COMPARATOR;
    }

    private Row[] getViewToModel() {
        if (viewToModel == null) {
            int tableModelRowCount = tableModel.getRowCount();
            viewToModel = new Row[tableModelRowCount];
            for (int row = 0; row < tableModelRowCount; row++) {
                viewToModel[row] = new Row(row);
            }

            if (isSorting()) {
                Arrays.sort(viewToModel);
            }
        }
        return viewToModel;
    }

    public int modelIndex(int viewIndex) {
        return getViewToModel()[viewIndex].modelIndex;
    }

    private int[] getModelToView() {
        if (modelToView == null) {
            int n = getViewToModel().length;
            modelToView = new int[n];
            for (int i = 0; i < n; i++) {
                modelToView[modelIndex(i)] = i;
            }
        }
        return modelToView;
    }
    
    // 2006.10.12 嵞昞帵帪慖戰偝傟偨僕儑僽愝掕丂lium add begin
    public int viewIndex(int modelIndex) {
        return getModelToView()[modelIndex];
    }
    // 2006.10.12 嵞昞帵帪慖戰偝傟偨僕儑僽愝掕丂lium add end

    // TableModel interface methods 
	public int getRowCount() {
		return (tableModel == null) ? 0 : tableModel.getRowCount();
	}

    public int getColumnCount() {
    	return (tableModel == null) ? 0 : tableModel.getColumnCount();
    }
    

    public String getColumnName(int column) {
        return tableModel.getColumnName(column);
    }

	public Class getColumnClass(int column) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线乱码一区二区三区| 久久国产剧场电影| 日产国产高清一区二区三区| 国产盗摄精品一区二区三区在线| 99精品欧美一区| 日韩欧美国产小视频| 亚洲综合无码一区二区| 国产一区二区三区在线看麻豆 | 国产亚洲成av人在线观看导航| 亚洲欧美国产毛片在线| 精品一区二区三区在线观看国产 | 国产亚洲一区二区三区四区| 一区二区三区久久| 国产a级毛片一区| 91精品免费观看| 一片黄亚洲嫩模| 丰满白嫩尤物一区二区| 日韩精品一区在线观看| 日韩电影在线一区二区三区| 日本道色综合久久| 国产精品不卡在线观看| 国产一区二区免费看| 日韩你懂的在线观看| 亚洲风情在线资源站| 日本韩国一区二区三区| 国产精品成人午夜| 成人看片黄a免费看在线| 国产丝袜欧美中文另类| 国产综合色产在线精品| 精品国产123| 久久99精品国产麻豆婷婷洗澡| 91精品国产综合久久香蕉麻豆| 一区二区三区成人在线视频 | 国产一二精品视频| 日韩精品一区二区三区四区| 免费看日韩a级影片| 日韩一区二区视频| 精品一区二区三区免费| 精品电影一区二区| 国产麻豆精品久久一二三| 久久久精品影视| 国产成人自拍网| 国产精品视频yy9299一区| 粉嫩av一区二区三区| 国产精品三级电影| 色综合久久久久综合99| 亚洲精品国久久99热| 在线观看免费视频综合| 亚洲福利视频一区| 欧美不卡123| 国产一区二区不卡老阿姨| 国产欧美精品一区aⅴ影院 | 国内不卡的二区三区中文字幕| 日韩一区二区三区视频在线观看| 久久国产夜色精品鲁鲁99| 精品999在线播放| 成人小视频在线| 亚洲人成影院在线观看| 欧美午夜精品久久久久久孕妇| 亚洲国产aⅴ成人精品无吗| 51精品视频一区二区三区| 国内精品不卡在线| 亚洲女厕所小便bbb| 精品视频一区二区不卡| 麻豆一区二区99久久久久| 国产精品久久免费看| 欧美专区日韩专区| 蜜臀久久99精品久久久久宅男| 久久久国产精华| 在线免费视频一区二区| 免费在线视频一区| 国产精品传媒入口麻豆| 91精品国产综合久久久蜜臀图片 | aaa亚洲精品| 亚洲成人午夜影院| 欧美精品一区二区在线播放| 色欧美乱欧美15图片| 麻豆免费看一区二区三区| 中文字幕中文字幕一区二区| 欧美理论电影在线| 99国产欧美另类久久久精品| 日韩中文字幕区一区有砖一区 | 欧美电影免费观看高清完整版在线 | 韩国av一区二区| 亚洲激情图片小说视频| 精品国产免费视频| 欧美日韩免费观看一区二区三区| 国产在线播精品第三| 亚洲福利一区二区三区| 国产精品理论片在线观看| 日韩欧美久久久| 欧美日韩在线不卡| 97精品电影院| 国产丶欧美丶日本不卡视频| 奇米四色…亚洲| 亚洲综合免费观看高清完整版 | 91精品国产综合久久精品麻豆| 成人av在线观| 国产乱码精品一区二区三区五月婷 | 欧美影院一区二区三区| 波多野结衣一区二区三区| 日本aⅴ免费视频一区二区三区| 亚洲欧美日韩中文播放 | 尤物av一区二区| 国产精品毛片无遮挡高清| 日韩三级精品电影久久久| 欧美色成人综合| 91片在线免费观看| 99re成人精品视频| 成人黄色电影在线| 国产ts人妖一区二区| 国产美女av一区二区三区| 久久激情五月激情| 精品一区二区三区久久| 狠狠色综合播放一区二区| 乱中年女人伦av一区二区| 老司机一区二区| 免费三级欧美电影| 激情久久五月天| 精品一区二区av| 国产真实乱偷精品视频免| 精品亚洲porn| 激情都市一区二区| 国产成人av一区| 成人永久aaa| 99热这里都是精品| 欧洲亚洲精品在线| 日韩一区欧美一区| 专区另类欧美日韩| 亚洲曰韩产成在线| 日本欧美久久久久免费播放网| 蜜桃视频免费观看一区| 免费人成在线不卡| 国产成人av电影在线观看| 成人av在线播放网址| 在线一区二区三区四区| 91麻豆精品久久久久蜜臀| 日韩精品中文字幕一区二区三区| 久久综合成人精品亚洲另类欧美| 久久免费视频一区| 亚洲欧美色一区| 石原莉奈在线亚洲二区| 国产乱码精品1区2区3区| 91在线视频免费91| 欧美日韩精品免费| 久久久不卡网国产精品一区| 成人免费一区二区三区视频| 一区二区三区在线免费播放| 免费看黄色91| av中文字幕亚洲| 日韩亚洲国产中文字幕欧美| 中文字幕av一区二区三区免费看| 夜夜嗨av一区二区三区网页 | 亚洲黄一区二区三区| 青青草国产成人av片免费| 国产精品91一区二区| 欧美亚洲国产一区二区三区va | 欧美一区午夜视频在线观看| 国产日韩精品一区二区浪潮av| 一区二区三区欧美| 国产一区二区三区香蕉| 欧美日韩三级一区二区| 国产精品国产精品国产专区不片 | 亚洲美女一区二区三区| 另类小说综合欧美亚洲| 色婷婷综合视频在线观看| 久久综合资源网| 一区二区在线电影| 国产美女一区二区| 91精品国产入口| 亚洲日本欧美天堂| 国产精品一区在线观看乱码| 欧美日韩精品欧美日韩精品一| 国产精品女同互慰在线看| 蜜桃视频一区二区三区在线观看| 色狠狠av一区二区三区| 国产精品国产馆在线真实露脸 | 日本精品视频一区二区三区| 国产日韩精品一区二区三区在线| 日韩av中文在线观看| 在线日韩av片| 国产精品私人影院| 国产91在线|亚洲| 欧美成人在线直播| 免费观看日韩电影| 欧美久久久一区| 一区二区三区波多野结衣在线观看 | 日本一区二区电影| 国产激情视频一区二区三区欧美| 欧美不卡一二三| 日本中文字幕一区| 欧美日韩成人在线一区| 亚洲福利国产精品| 欧美日韩一区不卡| 五月天精品一区二区三区| 欧美在线看片a免费观看| 一区二区三区在线不卡| 日本高清视频一区二区| 亚洲国产精品一区二区www在线 | 亚洲卡通动漫在线|