首页>代码>java Swing界面优化JscrollPane滚动条教程>/course/src/course/DemoScrollBarUI.java
package course;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.plaf.basic.BasicScrollBarUI;

/**
 * 自定义滚动条UI
 * @author SongFei
 * @date 2015年5月18日
 */
public class DemoScrollBarUI extends BasicScrollBarUI {

	@Override
	protected void configureScrollBarColors() {
		// 把手
//		thumbColor = Color.GRAY;
//		thumbHighlightColor = Color.BLUE;
//		thumbDarkShadowColor = Color.BLACK;
//		thumbLightShadowColor = Color.YELLOW;
		
		// 滑道
		trackColor = Color.WHITE;
//		trackHighlightColor = Color.GREEN;
	}

	@Override
	protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) {
		super.paintTrack(g, c, trackBounds);
	}
	
	@Override
	protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) {
		// 把绘制区的x,y点坐标定义为坐标系的原点
		// 这句一定一定要加上啊,不然拖动就失效了
		g.translate(thumbBounds.x, thumbBounds.y); 
		// 设置把手颜色
		g.setColor(Color.BLACK);
		// 画一个圆角矩形
		// 这里面前四个参数就不多讲了,坐标和宽高
		// 后两个参数需要注意一下,是用来控制角落的圆角弧度
		g.drawRoundRect(5, 0, 6, thumbBounds.height-1, 5, 5); 
		// 消除锯齿
		Graphics2D g2 = (Graphics2D) g;
		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		g2.addRenderingHints(rh);
		// 半透明
		g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
		// 设置填充颜色,这里设置了渐变,由下往上
		// g2.setPaint(new GradientPaint(c.getWidth() / 2, 1, Color.GRAY, c.getWidth() / 2, c.getHeight(), Color.GRAY));
		// 填充圆角矩形
		g2.fillRoundRect(5, 0, 6, thumbBounds.height-1, 5, 5);
	}
	
	@Override
	protected JButton createIncreaseButton(int orientation) {
		JButton button = new JButton(produceImage("down.png"));
		button.setBorder(null);
		return button;
	}
	
	@Override
	protected JButton createDecreaseButton(int orientation) {
		JButton button = new JButton(produceImage("up.png"));
		button.setBorder(null);
		return button;
	}
	
	/**
	 * 获取图片
	 * @param name 图片名称
	 * @return
	 */
	private ImageIcon produceImage(String name) {
		ImageIcon backImage = new ImageIcon(getClass().getClassLoader().getResource(name));
		return backImage;
	}
	
}
最近下载更多
yeyuantao  LV6 2023年3月1日
banliyoo  LV2 2021年9月15日
huochai666  LV3 2021年6月18日
22395797  LV3 2021年1月18日
xcj456  LV8 2020年9月12日
上善_若水  LV3 2020年3月13日
最代码吴  LV2 2020年1月8日
hyw789  LV5 2019年11月6日
applex  LV1 2019年6月7日
嗯嗯恩呢嫩嗯呢  LV1 2019年4月6日
最近浏览更多
woldxy  LV12 4月1日
dsuccess 2023年7月5日
暂无贡献等级
漫步的海星  LV4 2023年3月24日
yeyuantao  LV6 2023年3月1日
ruifeng  LV4 2022年7月22日
jacktingxiao 2022年3月31日
暂无贡献等级
nmd2022 2022年3月20日
暂无贡献等级
1415545830qq 2022年3月11日
暂无贡献等级
微信网友_5852742079762432  LV6 2022年2月28日
调戏红颜 2022年1月18日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友