zoukankan      html  css  js  c++  java
  • 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 客官~有缘再见!
  • 相关阅读:
    Tips(持续跟新)
    icpc 2018 徐州 网络赛 B 博弈+记忆化搜索
    2018 徐州 icpc 网络赛 A 递推or数学公式
    2018 徐州icpc网络赛 G 分块
    HDU 3092 Least common multiple(完全背包+思维)
    hdu 4747(DP?线性递推)
    Pell-方程学习小结
    C++中map的介绍用法以及Gym题目:Two Sequences
    求最长上升子序列和最长非下降子序列
    dfs+枚举,flip游戏的拓展POJ2965
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/9490886.html
Copyright © 2011-2022 走看看