zoukankan      html  css  js  c++  java
  • 自定义JTabbedPane 标签风格

    自定义JTabbedPane 标签风格

    下面简要说一下自定义这种Tab的关键点:
    1.     每个JComponent几乎都有其UI 委托对象类,当然JTabbedPane也不例外。我们首先继承BasicTabbedPaneUI类,这其中有我们必须要重写的一个方法,具体形式如下:
           public static ComponentUI createUI(JComponent c) {
              return new XXXTabbedPaneUI();
           }
         其中XXXTabbedPaneUI就是自己实现的BasicTabbedPaneUI的子类的名字。
    2.下面类出几个改变外观的重要的方法:
    a. protectedvoid installDefaults() //可以改变一些BasicTabbedPaneUI中默认的属性。
    b.protectedvoid paintTabArea(Graphics g, int tabPlacement, int selectedIndex)  //绘制整个选项卡区域
    c. protectedvoid paintTabBackground(Graphics g, int tabPlacement,
               int tabIndex, int x, int y, int w, int h, boolean isSelected)
    //绘制某个选项卡的背景色
    d. protectedvoid paintContentBorder(Graphics g, int tabPlacement,
               int selectedIndex) //绘制TabbedPane容器的四周边框样式。
    e. protectedvoid paintFocusIndicator(Graphics g, int tabPlacement,
               Rectangle[] rects, int tabIndex, Rectangle iconRect,
               Rectangle textRect, boolean isSelected)
    //绘制选中某个Tab后,获得焦点的样式。
    3.默认状态下每个选择项卡是连续摆放的,那么我们怎么使得他像新浪网页里那样的Tab中间有一定间隙呢,那么我们还定义一个内部类继承BasicTabbedPaneUI的内部类TabbedPaneLayou重写calculateTabRects方法,因为具体的选项卡标签位置是由变量rects所决定的。
    根据上面的介绍是不是你也想自己动手实践一下呢??那还等什么,让我们共同努力让Swing更美丽!!
     
    也许,看到这里你还是一头雾水,写了这个那到底怎么用它呢,其实很简单,在你要用的地方设置就行了,如下
            UserJTab = new JTabbedPane();
            UserJTab.setTabPlacement(JTabbedPane.TOP);
            UserJTab.setBorder(null);
            UserJTab.setUI(new SinaTabbedPaneUI());
    这里就用到了,这样刚才的效果就实现了
  • 相关阅读:
    [数据结构]图的DFS和BFS的两种实现方式
    [算法]两个栈实现一个队列
    [数据结构]手动实现队列
    [数据结构]手动实现栈
    [数据结构]手动实现单链表
    Hive分组取Top K数据
    HBase解决海量图片存储方案
    非结构化数据存储方案
    头条面试题之实现两个线程轮流打印字符串
    [算法]最大连续子数组和,最长重复子串,最长无重复字符子串
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/9495523.html
Copyright © 2011-2022 走看看