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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tableheader.java

?? 打印管理程序,測(cè)試完全通過(guò).windows開(kāi)發(fā)環(huán)境.
?? JAVA
字號(hào):
/* 
    $Author: $
    $Date: $
    $Revision: $
    $NoKeywords: $
*/
package jp.co.ntl.awt;

import java.awt.*;
import java.awt.event.*;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;

import jp.co.ntl.Util;
import jp.co.ntl.awt.event.TableModelListener;
import jp.co.ntl.awt.event.TableModelEvent;

public class TableHeader extends Component implements TableModelListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
    private float[] widthRatio = null;
    private int[] widths;
    
    /** 巊梡偡傞儌僨儖丅柧帵揑偵愝掕偝傟側(cè)偄応崌偼僨僼僅儖僩偺儌僨儖傪巊梡偡傞丅*/
    private TableModel model = null;    
    /** 巊梡偡傞儗儞僟儔乕丅柧帵揑偵愝掕偝傟側(cè)偄応崌偼僨僼僅儖僩偺儗儞僟儔乕傪巊梡偡傞丅*/
    private TableCellRenderer renderer = new DefaultHeaderRenderer();
    
    private PropertyChangeSupport support = new PropertyChangeSupport(this);
    
    public TableHeader(TableModel model) {
        this.model = model;
        
        MyMouseListener l = new MyMouseListener();
        addMouseListener(l);
        addMouseMotionListener(l);
    }

    public void setEnabled(boolean enabled) {
        super.setEnabled(enabled);
    
        repaint();
    }

    public void update(Graphics g) {
        paint(g);
    }        

    private Image backImage = null;
    private Graphics gImage = null;
    public void paint(Graphics g) {
        if (backImage == null) {
            Dimension d = getSize();
			backImage = createImage(d.width, d.height);
			gImage = backImage.getGraphics();
		}
        
        gImage.setClip(g.getClip());
        paintComponent(gImage);
     	g.drawImage(backImage, 0, 0, this);
    }        

    public void paintComponent(Graphics g) {
        if (widths == null) {
            calcWidths();
            int[] oldWidths = widths;
            //this.widths = widths;
            support.firePropertyChange("widths", oldWidths, widths);
        }
        
        FontMetrics fm = g.getFontMetrics();
        int bx, by;
        for (int i = 0, x = 0; i < widths.length; i++) {
            String value = model.getColumnName(i);
            switch (renderer.getAlignment(i)) {
            case TableCellRenderer.CENTER:
                bx = Util.basePointX(fm, value, widths[i]);
                by = Util.basePointY(fm, value, getSize().height);
                if (bx < 3) {
                    bx = 3;
                }
                break;
            case TableCellRenderer.RIGHT:
                if (fm.stringWidth(value) > widths[i] - 3) {
                    bx = 3;
                } else {
                    bx = widths[i] - fm.stringWidth(value) - 3;
                }
                by = Util.basePointY(fm, value, getSize().height);
                break;
            case TableCellRenderer.LEFT:
            default:
                bx = 3;
                by = Util.basePointY(fm, value, getSize().height);
                break;
            }
            Color color = renderer.getBackground(false, true, isEnabled());
            if (color == null) {
                g.setColor(getBackground());
            } else {
                g.setColor(color);
            }
            g.fill3DRect(x, 0, widths[i], getSize().height, true);
            /*
            g.setColor(Color.white);
            g.drawString(model.getColumnName(i), x + pt.x + 1, 0 + pt.y + 1);
            */
            color = renderer.getForeground(false, true, isEnabled());
            if (color == null) {
                g.setColor(getForeground());
            } else {
                g.setColor(color);
            }
            g.drawString(value, x + bx, 0 + by);
            x += widths[i];
        }
    }
    
    public void setHeaderRenderer(TableCellRenderer renderer) {
        this.renderer = renderer;
    }
    
    public TableCellRenderer getHeaderRenderer() {
        return renderer;
    }
    
    public synchronized void setWidthRatio(float[] widthRatio) {
        this.widthRatio = widthRatio;
        if (isValid()) {
            calcWidths();
            int[] oldWidths = widths;
            //this.widths = widths;
            support.firePropertyChange("widths", oldWidths, widths);
        } else {
            //widths偺寛掕偼丄paint()偑屇偽傟傞傑偱墑婜丅
        }
    }
    
    public synchronized void setWidths(int[] widths) {
        int[] oldWidths = widths;
        this.widths = widths;
        support.firePropertyChange("widths", oldWidths, widths);
        repaint();
    }
        
    public int[] getWidths() {
        if (widths == null) {
            calcWidths();
        }        
        return widths;
    }
    
    private void calcWidths() {
        if (widthRatio == null) {
            widthRatio = new float[model.getColumnCount()];
            for (int i = 0; i < widthRatio.length; i++) {
                widthRatio[i] = 1.0f;
            }
        }
            
        widths = new int[widthRatio.length];
        float denominator = 0;
        float widthRatioTemp = 0;
        int widthTemp = 0;
        int widthPrevTemp = 0;
        for (int i = 0; i < widthRatio.length; i++) {
            denominator += widthRatio[i];
        }
        for (int i= 0; i < widthRatio.length - 1; i++) {
            widthRatioTemp += widthRatio[i];
            widthPrevTemp = widthTemp;
            widthTemp = (int)(getSize().width * widthRatioTemp / denominator);
            widths[i] = widthTemp - widthPrevTemp;
        }
        widths[widths.length - 1] = getSize().width - widthTemp;
    }
    
    public void addPropertyChangeListener(PropertyChangeListener l) {
        support.addPropertyChangeListener(l);
    }
               
    public void removePropertyChangeListener(PropertyChangeListener l) {
        support.removePropertyChangeListener(l);
    }

    public void tableChanged(TableModelEvent tme) {
        this.model = tme.getTableModel();
        repaint();
    }
    
    private boolean columnPressListen = false;
    /** 楍偺僿僢僟傪僋儕僢僋偟偨偲偒偵昞帵偑曄傢傞偐偳偆偐傪愝掕偡傞丅 */
    void setColumnPressListen(boolean columnPressListen) {
        this.columnPressListen = columnPressListen;
    }

    /** 
     * 儅僂僗僀儀儞僩張棟僋儔僗 
     */
    class MyMouseListener implements MouseListener, MouseMotionListener {
        /** 儅僂僗億僀儞僞偑巜偟偰偄傞楍偺嫬奅慄斣崋 */
        int pointedLine;
        /** 儅僂僗億僀儞僞偑嫬奅慄傪巜偟偰偄傞偐偳偆偐 */
        boolean linePointed = false;
        /** 嫬奅慄偑慖戰(zhàn)偝傟偰偄傞偐偳偆偐 */
        boolean lineSelected = false;
        /** 楍偑慖戰(zhàn)偝傟偰偄傞偐偳偆偐 */
        boolean columnPressed = false;
        /** 慖戰(zhàn)偝傟偰偄傞楍斣崋 */
        int pressedColumn;

        private int prevPosX;
        
        /** 埵抲偐傜楍斣崋傪庢摼偡傞丅*/
        private int columnAtPoint(Point pt) {
            int curWidth = 0;
            for (int i = 0; i < widths.length; i++) {
                if ((pt.x >= curWidth) && (pt.x < curWidth + widths[i])) {
                    return i;
                }
                curWidth += widths[i];
            }
            return (-1);
        }
    
        public void mouseMoved(MouseEvent me) {
            if (widths == null) {
                return;
            }
            int ptX = me.getX();
            int x = 0;
            boolean b = false;
            for (int i = 0; i < widths.length - 1; i++) {
                x += widths[i];
                if ((ptX > x - 3) && (ptX < x + 3)) {
                    b = true;
                    pointedLine = i;
                    break;
                }
            }
            if (b && !linePointed) {
                setCursor(new Cursor(Cursor.E_RESIZE_CURSOR));
                linePointed = true;
            } else if (!b && linePointed) {
                setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                linePointed = false;
            }
        }

        public void mouseDragged(MouseEvent me) {
            int posX;
            //楍偺暆偼10傛?zhèn)鑿瑐硞瓊?cè)傜側(cè)偄
            if (lineSelected) {
                posX = me.getX();
                if (posX > getSize().width - 3) {
                    posX = getSize().width - 3;
                }
                //楍暆傪曄峏偡傞丅宺慄偺嵍偺楍傪怢弅偡傞僶乕僕儑儞
                widths[pointedLine] += posX - prevPosX;
                widths[widths.length - 1] -= posX - prevPosX;
                if (widths[pointedLine] < 10) {
                    widths[pointedLine] = 10;
                }
                int w = 0;
                for (int i = 0; i < widths.length; i++) {
                    w += widths[i];
                }
                widths[widths.length - 1] += getSize().width - w;
                
                prevPosX = posX;
                //僀儀儞僩偺敪惗
                support.firePropertyChange("widths", null, widths); 
//                repaint();
                int x = 0;
                for (int i = 0; i <= pointedLine; i++) {
                    x += widths[i];
                }
                if (posX < x - 2 || posX > x + 2) {
                    lineSelected = false;
                    setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                    linePointed = false;
                }

                repaint();
            }
        }

        public void mousePressed(MouseEvent me) {
            if (linePointed) {
                lineSelected = true;
                prevPosX = me.getX();
            } else {
                if (columnPressListen && AwtUtilities.isLeftMouseButton(me)) {
                    columnPressed = true;
                    pressedColumn = columnAtPoint(me.getPoint());
                    repaint();
                }
            }
        }

        public void mouseReleased(MouseEvent me) {
            lineSelected = false;
            if (columnPressListen && columnPressed) {
                columnPressed = false;
                //fireColumnSelectionChanged(new TableColumnEvent(this, pressedColumn));
                repaint();
            }
        }

        public void mouseClicked(MouseEvent me) {
        }

        public void mouseEntered(MouseEvent me) {
        }

        public void mouseExited(MouseEvent me) {
            if (columnPressListen && columnPressed) {
                columnPressed = false;
                repaint();
            }
        }
    }    
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区不卡| 欧美激情一二三区| 欧美经典一区二区| 亚洲成人自拍网| 国产成人精品免费| 91精品在线免费观看| 亚洲欧美一区二区三区国产精品| 免费高清成人在线| 欧美亚洲图片小说| 最新国产精品久久精品| 激情图片小说一区| 欧美一区二区三区四区久久| 一区二区欧美在线观看| 成人国产电影网| 久久久久国产成人精品亚洲午夜| 午夜精品久久久久久久| 欧美亚洲国产怡红院影院| 国产精品沙发午睡系列990531| 久热成人在线视频| 日韩精品最新网址| 久久国产精品72免费观看| 欧美日韩国产免费一区二区| 一区二区三区中文在线| 97精品电影院| 亚洲激情网站免费观看| 91色九色蝌蚪| 一个色妞综合视频在线观看| 91视频免费播放| 亚洲日本成人在线观看| 97久久人人超碰| 亚洲视频一区二区免费在线观看| 99综合影院在线| 亚洲欧美福利一区二区| 色哟哟国产精品免费观看| 国产精品久久久久久福利一牛影视| 久久99久久精品欧美| 精品少妇一区二区三区日产乱码| 免费成人在线网站| 久久久www成人免费毛片麻豆| 国产麻豆欧美日韩一区| 国产日韩视频一区二区三区| 成人看片黄a免费看在线| 国产精品国产自产拍高清av王其| va亚洲va日韩不卡在线观看| 亚洲人123区| 欧美色大人视频| 麻豆一区二区三区| 国产日产欧产精品推荐色| av福利精品导航| 亚洲午夜免费福利视频| 91精品国产乱| 国产成人精品aa毛片| 亚洲精品日韩专区silk | 一区二区三区在线播放| 欧美视频三区在线播放| 精品一区二区三区视频在线观看| 国产日产欧美一区| 欧美视频在线播放| 国产综合一区二区| 中文字幕一区二区三区不卡在线 | thepron国产精品| 亚洲成av人片www| 久久久久九九视频| 在线观看亚洲专区| 国产一区二区美女诱惑| 亚洲黄色av一区| 精品福利av导航| 色噜噜久久综合| 国产一区二区在线看| 亚洲乱码中文字幕综合| 欧美成人精品1314www| 99久久精品国产导航| 久久精品理论片| 亚洲精品久久7777| 久久青草欧美一区二区三区| 欧美伊人久久大香线蕉综合69| 狠狠色丁香婷婷综合| 亚洲影院理伦片| 国产丝袜欧美中文另类| 欧美区视频在线观看| 波多野结衣在线一区| 麻豆精品一二三| 亚洲一区二区美女| 国产精品的网站| 久久综合给合久久狠狠狠97色69| 99精品视频免费在线观看| 国产在线视视频有精品| 日日噜噜夜夜狠狠视频欧美人 | 成人中文字幕电影| 欧美猛男gaygay网站| 欧美精品自拍偷拍动漫精品| 日韩欧美国产一二三区| 色综合色综合色综合色综合色综合| 最新日韩av在线| 一区二区三区在线看| 日韩精品午夜视频| 精品在线免费观看| 成人久久18免费网站麻豆| 欧美亚洲丝袜传媒另类| 日韩小视频在线观看专区| 精品国产伦一区二区三区观看方式 | 国产欧美精品一区二区三区四区| 国产精品全国免费观看高清| 亚洲精品国产a| 精品一区二区三区在线播放| 国产91对白在线观看九色| 91久久精品日日躁夜夜躁欧美| 91精品久久久久久久91蜜桃| 久久久久国产精品免费免费搜索| 亚洲人成网站在线| 日本欧美一区二区在线观看| 大白屁股一区二区视频| 欧美亚洲高清一区二区三区不卡| 日韩欧美一区在线观看| 日韩久久一区二区| 久久成人免费电影| 色又黄又爽网站www久久| 日韩三级在线免费观看| 中文字幕五月欧美| 国产真实乱子伦精品视频| 日本久久精品电影| 久久男人中文字幕资源站| 亚洲一区二区三区四区在线观看| 韩日av一区二区| 欧美色综合天天久久综合精品| 久久久久久夜精品精品免费| 亚洲国产成人高清精品| 成人精品视频网站| 日韩一区二区三区视频在线观看| 国产精品福利在线播放| 久久成人羞羞网站| 欧美精品xxxxbbbb| 亚洲欧美色图小说| 成人午夜电影久久影院| 精品嫩草影院久久| 日韩精品乱码av一区二区| 91色porny蝌蚪| 国产精品久久网站| 极品少妇一区二区三区精品视频 | 国产精品99久久久久久宅男| 欧美精品乱人伦久久久久久| 亚洲日本va午夜在线电影| 国产精品一区在线| 日韩一级二级三级精品视频| 亚洲午夜在线视频| 91在线云播放| 综合久久一区二区三区| 从欧美一区二区三区| 国产性天天综合网| 精一区二区三区| 欧美电影精品一区二区| 日韩va亚洲va欧美va久久| 欧美色爱综合网| 亚洲亚洲精品在线观看| 国产亚洲欧美在线| 久久精品国产亚洲高清剧情介绍| 欧美日韩综合不卡| 亚洲中国最大av网站| 欧美午夜一区二区三区免费大片| 亚洲人成在线观看一区二区| av电影天堂一区二区在线| 日本一区二区动态图| 成人午夜看片网址| 国产目拍亚洲精品99久久精品| 国产一区二区三区在线观看免费 | 日韩欧美一区二区视频| 日韩精品欧美精品| 欧美一二三区在线| 久久福利视频一区二区| 精品理论电影在线观看| 久久99国产精品久久99果冻传媒| 欧美成人性战久久| 国内久久婷婷综合| 欧美经典一区二区| 91色综合久久久久婷婷| 一区二区三区四区视频精品免费| 91黄色在线观看| 亚洲18女电影在线观看| 欧美肥妇free| 美洲天堂一区二卡三卡四卡视频| 欧美va在线播放| 成人听书哪个软件好| 亚洲美女一区二区三区| 欧美在线视频全部完| 亚洲成av人影院| 欧美成人综合网站| 国产成人综合亚洲网站| 中文字幕在线不卡一区| 欧美影院一区二区| 久久不见久久见免费视频1| 国产精品欧美经典| 欧美三级资源在线| 久久国产三级精品| 国产精品久久久久久久久搜平片| 日本精品一级二级| 美女www一区二区| 国产精品久久久久aaaa| 欧美日韩精品二区第二页| 精品系列免费在线观看| 中文字幕在线播放不卡一区|