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

📄 table.java

📁 打印管理程序,测试完全通过.windows开发环境.
💻 JAVA
字号:
/* 
    $Author: $
    $Date: $
    $Revision: $
    $NoKeywords: $
*/

/**
 * 僥乕僽儖僋儔僗
 *
 * @see TableHeader
 * @see TableBody
 */

package jp.co.ntl.awt;

import java.awt.*;
import java.awt.event.*;

import jp.co.ntl.awt.event.ChangeEvent;
import jp.co.ntl.awt.event.ChangeListener;
import jp.co.ntl.awt.event.SelectionSupport;
import jp.co.ntl.awt.event.SelectionEvent;
import jp.co.ntl.awt.event.SelectionListener;

public class Table extends Panel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
    private final int SIZE_DUMMY = 20;
    
    private TableModel model;
    private TableHeader header;
    private TableBody body;
    
    private ScrollPanel scrollPanel;
    
    private SelectionSupport selection;
    
    public Table(TableModel tm, int headerHeight, int rowHeight) {
        if (tm == null) {
            model = new DefaultTableModel();
        } else {
            model = tm;
        }
        model.setTable(this);
        
        setLayout(null);
        
        header = new TableHeader(model);
        header.setSize(SIZE_DUMMY, headerHeight);
        body = new TableBody(model, header, rowHeight);
        
        model.addTableModelListener(header);
        model.addTableModelListener(body);        
        header.addPropertyChangeListener(body);

        scrollPanel = new ScrollPanel(body);
        scrollPanel.setColumnHeaderView(header);                
        add(scrollPanel);        

        // Microsoft VM懳嶔
        // Component(TableModel)偺戝偒偝偑曄傢偭偨偲偒偵
        // componentResize僀儀儞僩偑憲傜傟偰偙側偄
        model.addTableModelListener(scrollPanel);

        scrollPanel.getViewport().addMouseListener(new MyMouseListener());

		selection = new SelectionSupport();
		body.getSelectionRowBuffer().addChangeListener(new MyChangeListener());
    }
    
    public Table(int headerHeight, int rowHeight) {
        this(null, headerHeight, rowHeight);
    }
    
    public void setBounds(int x, int y, int width, int height) { 
        scrollPanel.setBounds(0, 0, width, height);
        super.setBounds(x, y, width, height);
    }
    
    public void setBounds(Rectangle r) {
        setBounds(r.x, r.y, r.width, r.height);
    }
    
    public void setSize(int width, int height) {
        scrollPanel.setSize(width, height);       
        super.setSize(width, height);
    }
        
    public void setSize(Dimension d) {
        setSize(d.width, d.height);
    }
    
    public void setEnabled(boolean enabled) {
        super.setEnabled(enabled);
        
        body.setEnabled(enabled);
        scrollPanel.setEnabled(enabled);
        header.setEnabled(enabled);
    }
    
	public void setMultiSelection(boolean multiSelection) {
		body.setMultiSelection(multiSelection);
	}
	
	public boolean isMultiSelection() {
		return body.isMultiSelection();
	} 

	public void setDrawRuledLine(boolean drawRuledLine) {
		body.setDrawRuledLine(drawRuledLine);
	}
	
	public boolean isDrawRuledLine() {
		return body.isDrawRuledLine();
	} 

    public void setTableCellRenderer(TableCellRenderer renderer) {
        body.setTableCellRenderer(renderer);
    }
    
    public void setHeaderRenderer(TableCellRenderer renderer) {
        header.setHeaderRenderer(renderer);
    }
    
    public void setWidthRatio(float[] widthRatio) {
        header.setWidthRatio(widthRatio);
    }
    
    public void setWidths(int[] widths) {
        header.setWidths(widths);
    }
    
    public int[] getSelectedRows() {
        return body.getSelectedRows();
    }
    
    public int getSelectedCount() {
    	return body.getSelectedCount();
    }
    
    public void selectRow(int row) {
    	body.selectRow(row);
    }
    
    /**
     * @param c 愝掕偡傞攚宨怓
     */
    public void setColor(Color c) {
        body.setBackground(c);
        scrollPanel.getViewport().setBackground(c);
    }
    
    public TableHeader getTableHeader() {
        return header;
    }
    
    public TableBody getTableBody() {
        return body;
    }
    
    public void update(Graphics g) {
        paint(g);
    }
    
    public void addSelectionListener(SelectionListener sl) {
    	selection.addSelectionListener(sl);
    }
    
    public void removeSelectionListener(SelectionListener sl) {
    	selection.removeSelectionListener(sl);
    }
    
    class MyMouseListener extends MouseAdapter {
        public void mousePressed(MouseEvent me) {
        	// 暋悢峴慖戰壜擻側偲偒丄Viewport傪僋儕僢僋偡傞偲慖戰夝彍
        	if (body.isMultiSelection()) {
	            body.clearSelectedRows();
        	}
        }
    }
    
    class MyChangeListener implements ChangeListener {
    	public void stateChanged(ChangeEvent ce) {
    		selection.fireSelectionEvent(new SelectionEvent(this));
    	}
    }
}

⌨️ 快捷键说明

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