📄 speedbar.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
public class Speedbar extends Canvas {
int width,height;
Image bar,block;
Image offScreenImage;
Toolkit toolkit;
protected SpeedListener speedListener=null;
final int MAX_SPEED=10;
final int MIN_SPEED=0;
final int SPOS=90;
final int EPOS=160;
//boolean firstShow=true;
int xPos=115;
int currentValue;
boolean posChanged=false;
public Speedbar() {
//this.bar=bar;
//this.block=block;
bar =(toolkit.getDefaultToolkit()).getImage("speedbar.gif");
block=(toolkit.getDefaultToolkit()).getImage("speedscale.gif");
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(bar,0);
tracker.addImage(block,0);
try{
tracker.waitForID(0);
}
catch(InterruptedException e){}
width = bar.getWidth(this)+2;
height =block.getHeight(this)+20;
setSize(width,height);
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g) {
if (posChanged){
g.drawImage(offScreenImage,0,0,this);
}else {
g.drawImage(bar,0,0,this);
g.drawImage(block,xPos,10,this);
}
}
//----------
public void addSpeedListener(SpeedListener l) {
speedListener = l;
}
public void removeSpeedListener(SpeedListener l) {
speedListener = null;
}
public void processMouseEvent(MouseEvent event){
switch (event.getID()){
case Event.MOUSE_UP:
xPos=event.getX();
if (xPos>EPOS+15||xPos<SPOS){
posChanged=false;
}else{
posChanged=true;
if (xPos>EPOS) xPos=EPOS;
offScreenImage = createImage(width,height);
Graphics gr = offScreenImage.getGraphics();
gr.drawImage(bar,0,0,this);
gr.drawImage(block,xPos,10,this);
currentValue=(xPos-SPOS)*(MAX_SPEED-MIN_SPEED)/(EPOS-SPOS);
if (speedListener != null) {
speedListener.getSpeedValue(currentValue);
}
repaint();
}
break;
}
}
public void processMouseMotionEvent(MouseEvent event){
switch (event.getID()){
case Event.MOUSE_DRAG:
xPos=event.getX();
if (xPos>EPOS||xPos<SPOS){
posChanged=false;
}else{
posChanged=true;
offScreenImage = createImage(width,height);
Graphics gr = offScreenImage.getGraphics();
gr.drawImage(bar,0,0,this);
gr.drawImage(block,xPos,10,this);
currentValue=(xPos-SPOS)*(MAX_SPEED-MIN_SPEED)/(EPOS-SPOS);
if (speedListener != null) {
speedListener.getSpeedValue(currentValue);
}
repaint();
}
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -