📄 scrollbar.java
字号:
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 + -