Swing滚动条重写

 

Swing滚动条重写

摘自:https://blog.csdn.net/qq_40064948/article/details/81738191

 

未验证

 1 Swing滚动条重写
 2 2018年08月16日 11:17:20
 3 阅读数:3
 4 package com.bjsxt.view.ui;
 5  
 6 import java.awt.AlphaComposite;
 7 import java.awt.Color;
 8 import java.awt.Graphics;  
 9 import java.awt.Graphics2D;  
10 import java.awt.Rectangle;
11   
12 import javax.swing.ImageIcon;  
13 import javax.swing.JButton;  
14 import javax.swing.JComponent;  
15 import javax.swing.plaf.basic.BasicScrollBarUI;
16  
17 /**
18  * 自定义滚动条
19  * @author Silly
20  *
21  */
22 public class MyScrollBarUI extends BasicScrollBarUI  {  
23     
24     @Override
25     protected void configureScrollBarColors() {
26         // 滑道
27         trackColor = Color.WHITE;
28     }
29  
30     @Override
31     protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) {
32         super.paintTrack(g, c, trackBounds);
33     }
34     
35     //把手
36     @Override
37     protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) {
38         // 把绘制区的x,y点坐标定义为坐标系的原点,这句一定一定要加上,不然拖动就失效了
39         g.translate(thumbBounds.x, thumbBounds.y); 
40         // 设置把手颜色
41         g.setColor(new Color(200,200,200));
42         // 画一个圆角矩形,前4个参数为坐标和宽高,后面两个参数用于控制角落的圆角弧度
43         g.drawRoundRect(5, 0, 6, thumbBounds.height-1, 5, 5); 
44         Graphics2D g2 = (Graphics2D) g;
45         //消除锯齿------------没有任何意义注掉
46 //        RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
47 //        g2.addRenderingHints(rh);
48         // 半透明
49         g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
50         // 设置填充颜色,这里设置了渐变,由下往上 ------------不好看注掉
51 //        g2.setPaint(new GradientPaint(c.getWidth() / 2, 1, Color.GRAY, c.getWidth() / 2, c.getHeight(), Color.GRAY));
52         // 填充圆角矩形
53         g2.fillRoundRect(5, 0, 6, thumbBounds.height-1, 5, 5);
54     }
55     
56     @Override
57     protected JButton createIncreaseButton(int orientation) {
58         JButton button = new JButton(produceImage("down.png"));
59         button.setBorder(null);
60         return button;
61     }
62     
63     @Override
64     protected JButton createDecreaseButton(int orientation) {
65         JButton button = new JButton(produceImage("up.png"));
66         button.setBorder(null);
67         return button;
68     }
69     
70     /**
71      * 获取图片
72      * @param name 图片名称
73      * @return
74      */
75     private ImageIcon produceImage(String name) {
76         ImageIcon backImage = new ImageIcon("img\\scroll\\"+name);
77         return backImage;
78     }
79     
80 }
1 设置方式:
2 
3     JScrollPane friendScro = new JScrollPane(tree);
4     friendScro.getVerticalScrollBar().setUI(new MyScrollBarUI());
5 来自一个喜欢编程的小姐姐 >.<
6 
7 客官~有缘再见!

 

posted @ 2018-08-16 23:56  LiuYanYGZ  阅读(308)  评论(0编辑  收藏  举报