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

📄 scrollbar.java

📁 Java编写的GUI聊天工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.jeeva.chatclient;

import java.awt.*;

public class ScrollBar extends Canvas
    implements Runnable
{

    public boolean mouseMove(Event event, int i, int j)
    {
        if(Disabled)
        {
            return true;
        } else
        {
            LastX = i;
            LastY = j;
            return true;
        }
    }

    public void drawDownScroller(Graphics g, int i, int j, int k, int l)
    {
        g.setColor(Colors[4]);
        g.fillRect(i, j, k, l);
        g.setColor(Colors[3]);
        g.drawRect(i, j, k - 1, l - 1);
    }

    public boolean mouseEnter(Event event, int i, int j)
    {
        return true;
    }

    public void setViewArea(int i, int j)
    {
        TotalArea = i;
        ViewArea = j;
        if(i <= j)
        {
            Disabled = true;
            setScrollPos(1);
            Event event = new Event(this, 0L, 1001, 0, 0, 0, 5, null);
            Parent.deliverEvent(event);
            return;
        } else
        {
            Disabled = false;
            calcValues();
            repaint();
            return;
        }
    }

    public boolean mouseExit(Event event, int i, int j)
    {
        return true;
    }

    public void GetVerValue()
    {
        int i = size().height - (Scroller.height + BsizeY * 2);
        double d = (double)(Scroller.y - BsizeY) / (double)i;
        int j = TotalArea - ViewArea;
        double d1 = (double)j * d;
        ScrollValue = (int)d1;
    }

    ScrollBar(int i, Component component, int j, int k)
    {
        Graph = null;
        Img = null;
        sleeptime = 100;
        Type = i;
        Parent = component;
        Width = j;
        Height = k;
        Scroller = new Rectangle(0, 0, 0, 0);
        Colors = new Color[10];
        Colors[0] = new Color(223, 223, 223);
        Colors[1] = Color.black;
        Colors[2] = Color.white;
        Colors[3] = Color.gray;
        Colors[4] = Color.lightGray;
        Xpnt = new int[3];
        Ypnt = new int[3];
        if(i == 1)
        {
            BsizeY = k;
            BsizeX = BsizeY;
            Scroller.x = BsizeX;
        } else
        {
            BsizeX = j;
            BsizeY = BsizeX;
            Scroller.y = BsizeY;
        }
        Down = Down1 = Down2 = false;
        Disabled = true;
        Dim = new Dimension(j, k);
        resize(Dim);
        validate();
    }

    public void paint(Graphics g)
    {
        int i = size().width;
        int j = size().height;
        if(i <= 0 || j <= 0)
            return;
        if(Graph == null || i != Dwidth || j != Dheight)
        {
            Dwidth = i;
            Dheight = j;
            Img = createImage(i, j);
            if(Img != null)
            {
                if(Graph != null)
                    Graph.dispose();
                Graph = Img.getGraphics();
            }
        }
        if(Graph != null && Img != null)
        {
            drawScrollBar(Graph, 0, 0, i, j);
            g.drawImage(Img, 0, 0, this);
        }
    }

    void doLineUp()
    {
        if(ScrollValue <= 0)
            return;
        Down = true;
        Down1 = true;
        ScrollValue -= LineValue;
        int i = 0;
        if(ScrollValue < i)
            ScrollValue = i;
        if(Type == 1)
        {
            int j = size().width - 2 * BsizeX;
            int l = (LineValue * j) / TotalArea;
            if(l <= 0)
                l = 1;
            int j1 = BsizeX;
            Scroller.x -= l;
            if(Scroller.x < j1)
                Scroller.x = j1;
            GetHorValue();
        } else
        {
            int k = size().height - 2 * BsizeY;
            int i1 = (LineValue * k) / TotalArea;
            if(i1 <= 0)
                i1 = 1;
            int k1 = BsizeY;
            Scroller.y -= i1;
            if(Scroller.y < k1)
                Scroller.y = k1;
            GetVerValue();
        }
        repaint();
        if(ScrollValue != LastValue)
        {
            Event event = new Event(this, 0L, 1001, 0, 0, ScrollValue, 1, null);
            Parent.deliverEvent(event);
            LastValue = ScrollValue;
        }
    }

    public boolean mouseUp(Event event, int i, int j)
    {
        if(runner != null && running)
            runner.stop();
        runner = null;
        running = false;
        if(Disabled)
            return true;
        Down = false;
        if(Down1 || Down2)
            Down1 = Down2 = false;
        repaint();
        return true;
    }

    void calcValues()
    {
        int j = TotalArea - ViewArea;
        int i;
        if(Type == 1)
            i = size().width - 2 * BsizeX;
        else
            i = size().height - 2 * BsizeY;
        double d = 1.0D - (double)j / (double)TotalArea;
        double d1 = d * (double)i;
        if(Type == 1)
        {
            Scroller.width = (int)d1;
            if(Scroller.width < 8)
                Scroller.width = 8;
            Scroller.height = size().height;
            return;
        }
        Scroller.width = size().width;
        Scroller.height = (int)d1;
        if(Scroller.height < 8)
            Scroller.height = 8;
    }

    public Dimension minimumSize()
    {
        return Dim;
    }

    public void drawArrow(Graphics g, int i, int j, int k, int l, int i1)
    {
        int j1 = (int)Math.round((double)l / 2D);
        int k1 = (int)Math.round((double)i1 / 2D);
        switch(i)
        {
        case 1: // '\001'
            Xpnt[0] = (j + l) - 1;
            Ypnt[0] = k;
            Xpnt[1] = (j + l) - 1;
            Ypnt[1] = (k + i1) - 1;
            Xpnt[2] = j;
            Ypnt[2] = (k + k1) - 1;
            break;

        case 2: // '\002'
            Xpnt[0] = j;
            Ypnt[0] = k;
            Xpnt[1] = j;
            Ypnt[1] = (k + i1) - 1;
            Xpnt[2] = (j + l) - 1;
            Ypnt[2] = (k + k1) - 1;
            break;

        case 3: // '\003'
            Xpnt[0] = j;
            Ypnt[0] = (k + i1) - 1;
            Xpnt[1] = (j + l) - 1;
            Ypnt[1] = (k + i1) - 1;
            Xpnt[2] = (j + j1) - 1;
            Ypnt[2] = k;
            break;

        case 4: // '\004'
            Xpnt[0] = j;
            Ypnt[0] = k;
            Xpnt[1] = (j + l) - 1;
            Ypnt[1] = k;
            Xpnt[2] = (j + j1) - 1;
            Ypnt[2] = (k + i1) - 1;
            break;
        }
        if(Disabled)
            g.setColor(Colors[0]);
        else
            g.setColor(Colors[1]);
        g.fillPolygon(Xpnt, Ypnt, 3);
    }

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

    public void GetHorValue()
    {
        int i = size().width - (Scroller.width + BsizeX * 2);
        double d = (double)(Scroller.x - BsizeX) / (double)i;
        int j = TotalArea - ViewArea;
        double d1 = (double)j * d;
        ScrollValue = (int)d1;
    }

    void doPageUp()
    {
        Down = true;
        Graphics g = getGraphics();
        g.setColor(Colors[3]);
        ScrollValue -= PageValue;
        int i = 0;
        if(ScrollValue < i)
            ScrollValue = i;
        if(Type == 1)
        {
            int j = size().width - 2 * BsizeX;
            int l = (PageValue * j) / TotalArea;
            int j1 = BsizeX;
            int l1 = j1;
            g.fillRect(l1, 0, Scroller.x - BsizeX, size().height - 1);
            Scroller.x -= l;
            if(Scroller.x < j1)
                Scroller.x = j1;
        } else
        {
            int k = size().height - 2 * BsizeY;
            int i1 = (PageValue * k) / TotalArea;
            int k1 = BsizeY;
            int i2 = k1;
            g.fillRect(0, i2, size().width - 1, Scroller.y - BsizeY);
            Scroller.y -= i1;
            if(Scroller.y < k1)
                Scroller.y = k1;
        }
        Event event = new Event(this, 0L, 1001, 0, 0, ScrollValue, 3, null);
        Parent.deliverEvent(event);
        g.dispose();
    }

    public void setScrollPos(int i)
    {
        if(i == 1)
        {
            int j = 0;
            ScrollValue = j;
            if(Type == 1)
            {
                int l = BsizeX;
                Scroller.x = l;
            } else
            {
                int i1 = BsizeY;
                Scroller.y = i1;
            }
        } else
        {
            int k = TotalArea - ViewArea;
            ScrollValue = k;
            if(Type == 1)
            {
                int j1 = size().width - (Scroller.width + BsizeX);
                Scroller.x = j1;
            } else
            {

⌨️ 快捷键说明

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