Module  java.desktop
软件包  javax.swing

Class CellRendererPane

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessible


    public class CellRendererPane
    extends Container
    implements Accessible
    此类插入到单元格渲染器和使用它们的组件之间。 它只是阻止重绘()和invalidate()方法,否则会在配置渲染器时传播树。 它由JTable,JTree和JList的实现使用。 例如,下面是代码中如何使用CellRendererPane来绘制JList中的每一行:
      cellRendererPane = new CellRendererPane();
       ...
       Component rendererComponent = renderer.getListCellRendererComponent();
       renderer.configureListCellRenderer(dataModel.getElementAt(row), row);
       cellRendererPane.paintComponent(g, rendererComponent, this, x, y, w, h); 

    渲染器组件必须重写isShowing(),并无条件地返回true以正常工作,因为Swing绘图对于具有isShowing false的组件不起作用。

    警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,支持所有JavaBeans的长期存储已被添加到java.beans包中。 请参阅XMLEncoder

    从以下版本开始:
    1.2
    另请参见:
    Serialized Form
    • 字段详细信息

      • accessibleContext

        protected AccessibleContext accessibleContext
        AccessibleContext与此 CellRendererPan相关联
    • 构造方法详细信息

      • CellRendererPane

        public CellRendererPane​()
        构造一个CellRendererPane对象。
    • 方法详细信息

      • paintComponent

        public void paintComponent​(Graphics g,
                                   Component c,
                                   Container p,
                                   int x,
                                   int y,
                                   int w,
                                   int h,
                                   boolean shouldValidate)
        在图形对象上绘制单元格渲染器组件c。 在组件被绘制之前,它被重新定位到这个(如果需要的话),它的边界被设置为w,h,并且图形对象被有效地翻译成x,y。 如果它是一个JComponent,双缓冲暂时关闭。 在组件被绘制之后,它的边界被重置为-w,-h,0,0,这样,如果它是最后一个渲染器组件,则不会开始消耗输入。 容器p是我们实际绘制的组件,通常它等于this.getParent()。 如果shouldValidate为真,组件c将在绘制前验证。
        参数
        g - 要绘制的 Graphics对象
        c - 绘制 Component
        p - 实际绘制的 Container组件
        x - 一个int指定从图形上下文的左边缘测量的区域的左侧,以像素为单位
        y - 一个int指定要绘制的区域的顶部,以从图形上下文的顶部边缘向下测量的像素
        w - 一个int指定绘制的区域的宽度,以像素为单位
        h - 一个int指定绘制的区域的高度,以像素为单位
        shouldValidate - 如果为true,组件 c将在绘制前进行验证
      • paintComponent

        public void paintComponent​(Graphics g,
                                   Component c,
                                   Container p,
                                   int x,
                                   int y,
                                   int w,
                                   int h)
        调用this.paintComponent(g,c,p,x,y,w,h,false)。
        参数
        g - 要绘制的 Graphics对象
        c - 绘制 Component
        p - 实际绘制的 Container组件
        x - 指定绘制区域左侧的int(以像素为单位),从图形上下文的左边缘测量
        y - 一个int指定要绘制的区域的顶部,以从图形上下文的顶部边缘测量的像素
        w - 一个int指定绘制的区域的宽度,以像素为单位
        h - 一个int指定绘制的区域的高度,以像素为单位
      • paintComponent

        public void paintComponent​(Graphics g,
                                   Component c,
                                   Container p,
                                   Rectangle r)
        调用this.paintComponent()与矩形x,y,width,height字段。
        参数
        g - 要绘制的 Graphics对象
        c - 绘制 Component
        p - 实际绘制的 Container组件
        r - 要绘制的 Rectangle
      • getAccessibleContext

        public AccessibleContext getAccessibleContext​()
        获取与此CellRendererPane关联的AccessibleContext。 对于CellRendererPanes,AccessibleContext采用AccessibleCellRendererPane的形式。 如有必要,将创建一个新的AccessibleCellRendererPane实例。
        Specified by:
        getAccessibleContext在接口 Accessible
        重写:
        getAccessibleContextComponent
        结果
        一个AccessibleCellRendererPane作为该CellRendererPane的AccessibleContext