📄 controlbar.java
字号:
/**************************************************************************
* (C) Copyright 2008 by Tao Liuyuan and Zhang Shuitao. *
* All Rights Reserved. *
* *
* Project : KYPlayer *
* File : ControlBar.java *
* JDK version used : jdk1.6.0_u4 *
* Version : 1.00 *
* Created : 2008.7.6 by we *
*************************************************************************/
package MP3Player;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JPanel;
/**
* 控制拖动条类
* @author we
*/
public class ControlBar extends JPanel implements MouseListener,
MouseMotionListener{
/**
* 自动生成的序列化值
*/
private static final long serialVersionUID = 1L;
/**
* 拖动位置的比例
*/
private double processPercent = 0;
/**
* processPercent属性的get方法
* @return double
*/
public double getProcessPercent() {
return processPercent;
}
/**
* processPercent属性的set方法,并对拖拉钮进行重定位
* @param processPercent
*/
public void setProcessPercent(double processPercent) {
if (processPercent < 0)
processPercent = 0;
if (processPercent > 1)
processPercent = 1;
this.processPercent = processPercent;
resetBar();
}
/**
* 根据位置比例重设控制条
* @param processPercent
*/
private void resetBar() {
startX = (int)((getWidth()-21)*processPercent);
repaint();
}
/**
* 拖拉钮的位置
*/
private int startX = 0;
/**
* 重载的重绘组件函数
*/
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.gray);
g.drawLine(0, getHeight()/2, getWidth()-1, getHeight()/2);
g.setColor(Color.black);
g.drawRoundRect(startX, 0, 20, getHeight()-1, 2, 2);
g.setColor(Color.lightGray);
g.fillRoundRect(startX+1, 1, 19, getHeight()-2, 2, 2);
}
/**
* 构造函数,改变光标形状
*/
public ControlBar() {
super();
setCursor(new Cursor(Cursor.HAND_CURSOR));
addMouseListener(this);
addMouseMotionListener(this);
repaint();
}
/**
* 根据鼠标动作重设工具条
* @param e
*/
public void reset(MouseEvent e) {
if (e.getX() < 10)
startX = 0;
else if (e.getX() > getWidth()-11)
startX = getWidth()-21;
else
startX = e.getX()-10;
processPercent = (double)startX / (double)(getWidth()-21);
repaint();
}
/**
* 对控制条进行操作完毕后执行的函数
*/
public void done() {
}
/**
* 根据鼠标动作重设提示信息
* @param e
*/
public void setTip(MouseEvent e) {
int percentInterger = getPointerPostion(e);
setToolTipText(Integer.toString(percentInterger) + "%");
}
/**
* 根据鼠标位置确定位置比例
* @param e
* @return int
*/
public int getPointerPostion(MouseEvent e) {
int percentInterger = (e.getX()-10)*100 / (getWidth()-21);
if(percentInterger < 0)
percentInterger = 0;
else if (percentInterger > 100)
percentInterger = 100;
return percentInterger;
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
/**
* 鼠标单击响应
*/
@Override
public void mousePressed(MouseEvent e) {
reset(e);
}
/**
* 鼠标拖放结束响应
*/
@Override
public void mouseReleased(MouseEvent e) {
done();
}
/**
* 鼠标拖放响应
*/
@Override
public void mouseDragged(MouseEvent e) {
reset(e);
}
/**
* 鼠标移动响应
*/
@Override
public void mouseMoved(MouseEvent e) {
setTip(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -