jnscrollpane.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 137 行

JAVA
137
字号
package org.jnode.wt.components;

import org.jnode.wt.events.JNAdjustmentEvent;
import org.jnode.wt.image.JNImage;
import org.jnode.wt.events.JNAdjustmentListener;

import java.awt.peer.ScrollPanePeer;
import java.awt.Adjustable;

/**
 * @author kishore
 */
public class JNScrollPane extends JNPanel implements ScrollPanePeer, JNAdjustmentListener {

    private int imglocX = 0;
    private int imglocY = 0;

    private int imgOriginalWidth = 0;
    private int imgOriginalHeight = 0;

    private int imgViewableWidth = 0;
    private int imgViewableHeight = 0;

    private JNScrollBar vsbar = new JNScrollBar(JNScrollBar.VERTICAL);
    private JNScrollBar hsbar = new JNScrollBar(JNScrollBar.HORIZONTAL);

    private JNImagePane imgpane = new JNImagePane();

    /**
     * JNScrollPane constructor comment.
     */
    public JNScrollPane(int w, int h) {
        super();

        this.setSize(w, h);

        vsbar.addAdjustmentListener(this);
        hsbar.addAdjustmentListener(this);

        this.add(vsbar);
        this.add(hsbar);

        this.add(imgpane);
    }

    public void adjustmentValueChanged(JNAdjustmentEvent e) {
        int a = e.getValue();

        if (e.getSource().equals(vsbar)) {
            imglocY = a;
            imgpane.setImageXY(imglocX, imglocY);
        } else if (e.getSource().equals(hsbar)) {
            imglocX = a;
            imgpane.setImageXY(imglocX, imglocY);
        }


    }

    private void calculate(int w, int h) {

        int len = 20;

        vsbar.setSize(len, h - len);
        vsbar.setLocation(w - len, 0);

        hsbar.setSize(w - len, len);
        hsbar.setLocation(0, h - len);


        imgViewableWidth = w - len;
        imgViewableHeight = h - len;

        imgpane.setSize(imgViewableWidth, imgViewableHeight);
        imgpane.setLocation(0, 0);


        vsbar.setMinMax(0, imgOriginalHeight - imgViewableHeight);
        hsbar.setMinMax(0, imgOriginalWidth - imgViewableWidth);
    }

    public void setImage(JNImage jn) {
        imgpane.setImage(jn);

        imgOriginalWidth = jn.getWidth();
        imgOriginalHeight = jn.getHeight();
    }

    public void setInitialLocation(int x, int y) {
        if (this.isVisible()) {
            imgpane.setImageXY(x, y);
        }
    }

    public void setSize(int w, int h) {
        super.setSize(w, h);

        calculate(w, h);
    }

    public void setVisible(boolean b) {
        super.setVisible(b);

        if (b) {
            imgpane.setImageXY(imgpane.imglocX, imgpane.imglocY);
            imgpane.repaint();
        }

    }

    public void childResized(int width, int height) {
        //TODO: implement it
    }

    public int getHScrollbarHeight() {
        //TODO: implement it
        return 0;
    }

    public int getVScrollbarWidth() {
        //TODO: implement it
        return 0;
    }

    public void setScrollPosition(int h, int v) {
        //TODO: implement it
    }

    public void setUnitIncrement(Adjustable item, int inc) {
        //TODO: implement it
    }

    public void setValue(Adjustable item, int value) {
        //TODO: implement it
    }
}

⌨️ 快捷键说明

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