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

📄 viewport.java

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

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

import jp.co.ntl.awt.event.ViewListener;

public class Viewport extends Panel implements ComponentListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
    private Component view;
    
    transient protected Vector listeners = new Vector();

    public Viewport(Component view) {
        this.view = view;
        view.addComponentListener(this);

        setLayout(null);
    }
    
    public void setViewTop(int top) {
        Point p = view.getLocation();
        if (p.y != -top) {
            view.setLocation(p.x, -top);
            invalidate();
        }
    }
    
    public int getViewTop() {
        return -view.getLocation().y;
    }
    
    public int getViewHeight() {
        return view.getSize().height;
    }
    
    public void setBounds(int x, int y, int width, int height) {
        if (view != null) {
            view.setSize(width, ((Scrollable)view).getScrollableHeight());
        }
        super.setBounds(x, y, width, height);
    }
    
    public void addViewListener(ViewListener vl) {
        listeners.addElement(vl);
    }

    public void removeViewListener(ViewListener vl) {
        listeners.removeElement(vl);
    }

    private void fireViewMoved(ComponentEvent ce) {
        Vector v;
        synchronized(this) {
            v = (Vector)listeners.clone();
        }
        for (int i = 0; i < v.size(); i++) {
            ViewListener vl = (ViewListener)v.elementAt(i);
            vl.viewMoved(ce);
        }
    }

    private void fireViewResized(ComponentEvent ce) {
        Vector v;
        synchronized(this) {
            v = (Vector)listeners.clone();
        }
        for (int i = 0; i < v.size(); i++) {
            ViewListener vl = (ViewListener)v.elementAt(i);
            vl.viewResized(ce);
        }
    }

    public void componentHidden(ComponentEvent ce) {}
    public void componentMoved(ComponentEvent ce) {
        fireViewMoved(new ComponentEvent(this, ComponentEvent.COMPONENT_MOVED));
    }
    public void componentShown(ComponentEvent ce) {}
    public void componentResized(ComponentEvent ce) {
        fireViewResized(new ComponentEvent(this, ComponentEvent.COMPONENT_RESIZED));
    }

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

/*    
    public void paint(Graphics g) {
        Component c = getComponent(0);
        if (c == null) {
            super.paint(g);
            return;
        }
        
        Dimension d = getSize();
        Rectangle r = c.getBounds();
        Shape clip = g.getClip();
        if (r.y + r.height > d.height) {
            g.setClip(0, 0 - r.y , d.width, d.height);
            super.paint(g);
        } else {
            g.setClip(0, 0 - r.y, d.width, r.y + r.height);
            super.paint(g);
            g.setClip(0, r.y + r.height, d.width, d.height - (r.y + r.height));
            g.setColor(getBackground());
            g.fillRect(0, r.y + r.height, d.width, d.height - (r.y + r.height));
        }

        g.setClip(clip);
        super.paint(g);
    }
*/

}

⌨️ 快捷键说明

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