- java.lang.Object
-
- javax.swing.plaf.nimbus.AbstractRegionPainter
-
- All Implemented Interfaces:
-
Painter<JComponent>
public abstract class AbstractRegionPainter extends Object implements Painter<JComponent>
方便的基类,用于定义Painter实例,用于渲染Nimbus中的区域或组件。
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 protected static class
AbstractRegionPainter.PaintContext
一个类封装状态在绘画时有用。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
AbstractRegionPainter()
创建一个新的AbstractRegionPainter
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 protected void
configureGraphics(Graphics2D g)
配置给定的Graphics2D。protected float
decodeAnchorX(float x, float dx)
解码并返回给定控制点的编码X值的锚定点的实际像素位置的浮点值,以及从该控制点到锚点的偏移距离。protected float
decodeAnchorY(float y, float dy)
解码并返回一个浮点值,表示给定控制点的编码Y值的锚点的实际像素位置,以及从该控制点到锚点的偏移距离。protected Color
decodeColor(Color color1, Color color2, float midPoint)
解码并返回从两个其他颜色之间的偏移导出的颜色。protected Color
decodeColor(String key, float hOffset, float sOffset, float bOffset, int aOffset)
解码并返回从UI默认值中的基色导出的颜色。protected LinearGradientPaint
decodeGradient(float x1, float y1, float x2, float y2, float[] midpoints, Color[] colors)
给定用于创建LinearGradientPaint的参数,此方法将创建并返回一个线性渐变画线。protected RadialGradientPaint
decodeRadialGradient(float x, float y, float r, float[] midpoints, Color[] colors)
给定用于创建RadialGradientPaint的参数,此方法将创建并返回径向渐变画。protected float
decodeX(float x)
解码并返回表示给定编码X值的实际像素位置的浮点值。protected float
decodeY(float y)
解码并返回表示给定编码的y值的实际像素位置的浮点值。protected abstract void
doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys)
实际执行绘画操作。protected Color
getComponentColor(JComponent c, String property, Color defaultColor, float saturationOffset, float brightnessOffset, int alphaOffset)
从给定的JComponent获取颜色属性。protected Object[]
getExtendedCacheKeys(JComponent c)
获取绘图器实现想要包含在图像缓存查找中的任何额外的属性。protected abstract AbstractRegionPainter.PaintContext
getPaintContext()
获取此Paint操作的PaintContext。void
paint(Graphics2D g, JComponent c, int w, int h)
渲染给给定的Graphics2D
对象。
-
-
-
方法详细信息
-
paint
public final void paint(Graphics2D g, JComponent c, int w, int h)
渲染给给定的
Graphics2D
对象。 该方法的实现可能会修改Graphics2D
状态,并且在完成后不需要恢复该状态。 在大多数情况下,建议呼叫者传递一个临时图形对象。Graphics2D
绝对不能为空。图形对象上的状态可以通过
paint
方法来实现,但可能不是。 例如,在图形上设置抗锯齿渲染提示可以由或可能不被Painter
实现所尊重。提供的对象参数充当可选配置参数。 例如,它可以是类型
Component
。 一个Painter
,期望它可以从该Component
读取状态并使用状态进行绘画。 例如,一个实现可以读取backgroundColor并使用它。通常,为了提高可重用性,大多数标准
Painter
忽略此参数。 因此,它们可以在任何情况下重复使用。object
可能为null。 如果对象参数为空,则实现不能抛出NullPointerException。最后,
width
和height
参数指定Painter
应绘制的宽度和高度。 更具体地说,指定的宽度和高度指示画家应该在该宽度和高度内完全绘制。g
参数上的任何指定的剪辑将进一步限制该区域。例如,假设我有一个绘制渐变的
Painter
实现。 渐变从白色变成黑色。 它“延伸”填满绘画区域。 因此,如果我用这个Painter
绘制一个500×500的区域,最左边就是黑色,最右边是白色,并且之间画一个平滑的渐变。 那么我可以在没有修改的情况下重新使用Painter
来绘制20x20的区域。 这个区域也将在左边是黑色,右边是白色,并且之间画一个平滑的渐变。- Specified by:
-
paint
在接口Painter<JComponent>
- 参数
-
g
- 要呈现的Graphics2D。 这不能为空。 -
c
- 可选配置参数。 这可能是空的。 -
w
- 要绘制的区域的宽度。 -
h
- 要涂漆的面积的高度。
-
getExtendedCacheKeys
protected Object[] getExtendedCacheKeys(JComponent c)
获取绘图器实现想要包含在图像缓存查找中的任何额外的属性。 检查每次调用油漆(g,c,w,h)的方法。- 参数
-
c
- 当前paint调用的组件 - 结果
- 数组要包含在缓存中的额外的对象
-
getPaintContext
protected abstract AbstractRegionPainter.PaintContext getPaintContext()
获取此Paint操作的PaintContext。 这种方法是在每个油漆上调用的,所以应该是快速的,不会产生垃圾。 PaintContext包含缓存提示等信息。 它还包含在运行时解码点所需的数据,例如拉伸插图,编码点定义的画布大小以及拉伸插入是否反转。
这种方法允许子类将不同状态的绘图与可能不同的画布大小等打包成一个AbstractRegionPainter实现。
- 结果
- 一个与此绘图操作关联的PaintContext。
-
configureGraphics
protected void configureGraphics(Graphics2D g)
配置给定的Graphics2D。 通常,渲染提示或合成规则在绘制之前应用于Graphics2D对象,这将影响所有后续的绘制操作。 该方法提供了一种方便的钩子,用于在渲染之前配置Graphics对象,而不管渲染操作是执行到中间缓冲还是直接执行到显示。
- 参数
-
g
- 要配置的Graphics2D对象。 不会为空
-
doPaint
protected abstract void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys)
实际执行绘画操作。 子类必须实现此方法。 传递的图形对象可以表示被呈现的实际表面,也可以是中间缓冲区。 它也已经预翻译。 简单地渲染组件,就像它位于0,0,宽度为width
,高度为height
。 出于性能原因,您可能需要从Graphics2D对象读取剪辑,并且仅在该空间内呈现。- 参数
-
g
- 要绘制的Graphics2D曲面 -
c
- 与绘图事件相关的JComponent。 例如,如果渲染的区域是Button,那么c
将是一个JButton。 如果绘制的区域是ScrollBarSlider,那么该组件将是JScrollBar。 该值可能为null。 -
width
- 要绘制的区域的宽度。 请注意,在绘制前景的情况下,该值可能与c.getWidth()不同。 -
height
- 要绘画的区域的高度。 请注意,在绘制前景的情况下,该值可能与c.getHeight()不同。 -
extendedCacheKeys
- 调用getExtendedCacheKeys()的结果
-
decodeX
protected final float decodeX(float x)
解码并返回表示给定编码X值的实际像素位置的浮点值。- 参数
-
x
- 编码的x值(0 ... 1或1 ... 2或2 ... 3) - 结果
- 解码的x值
- 异常
-
IllegalArgumentException
- 如果是x < 0
或x > 3
-
decodeY
protected final float decodeY(float y)
解码并返回表示给定编码的y值的实际像素位置的浮点值。- 参数
-
y
- 编码的y值(0 ... 1,或1 ... 2或2 ... 3) - 结果
- 解码的y值
- 异常
-
IllegalArgumentException
- 如果是y < 0
或y > 3
-
decodeAnchorX
protected final float decodeAnchorX(float x, float dx)
解码并返回给定控制点的编码X值的锚定点的实际像素位置的浮点值,以及从该控制点到锚点的偏移距离。- 参数
-
x
-x
控制点(0 ... 1或1 ... 2或2 ... 3)的编码x值, -
dx
- 从控制点x到锚的偏移距离 - 结果
- 解码的x位置的控制点
- 异常
-
IllegalArgumentException
- 如果是x < 0
或x > 3
-
decodeAnchorY
protected final float decodeAnchorY(float y, float dy)
解码并返回一个浮点值,表示给定控制点的编码Y值的锚点的实际像素位置,以及从该控制点到锚点的偏移距离。- 参数
-
y
-y
控制点(0 ... 1或1 ... 2或2 ... 3)的编码y值, -
dy
- 从控制点y到锚的偏移距离 - 结果
- 控制点的解码y位置
- 异常
-
IllegalArgumentException
- 如果是y < 0
或y > 3
-
decodeColor
protected final Color decodeColor(String key, float hOffset, float sOffset, float bOffset, int aOffset)
解码并返回从UI默认值中的基色导出的颜色。- 参数
-
key
- 与定义基色的UIManager的UI Defaults表中的值对应的键 -
hOffset
- 用于派生的色调偏移量。 -
sOffset
- 用于推导的饱和偏移。 -
bOffset
- 用于推导的亮度偏移。 -
aOffset
- 用于派生的alpha偏移量。 介于0 ... 255之间 - 结果
- 派生颜色,如果父uiDefault颜色改变,其颜色值将会改变。
-
decodeColor
protected final Color decodeColor(Color color1, Color color2, float midPoint)
解码并返回从两个其他颜色之间的偏移导出的颜色。- 参数
-
color1
- 第一种颜色 -
color2
- 第二种颜色 -
midPoint
- 颜色1和颜色2之间的偏移值为0.0是颜色1和1.0是颜色2; - 结果
- 派生颜色
-
decodeGradient
protected final LinearGradientPaint decodeGradient(float x1, float y1, float x2, float y2, float[] midpoints, Color[] colors)
给定用于创建LinearGradientPaint的参数,此方法将创建并返回一个线性渐变画线。 此方法的一个主要目的是避免创建一个LinearGradientPaint,其中起点和终点相等。 在这种情况下,结束y点稍微增加以避免重叠。- 参数
-
x1
- x1 -
y1
- y1 -
x2
- x2 -
y2
- y2 -
midpoints
- 中点 -
colors
- 颜色 - 结果
- 一个有效的LinearGradientPaint。 此方法从不返回null。
- 异常
-
NullPointerException
- 如果midpoints
数组为空,或colors
数组为空, -
IllegalArgumentException
- 如果起点和终点是相同的点,或midpoints.length != colors.length
或colors
大小小于2,或者midpoints
值小于0.0或大于1.0,或者midpoints
不以严格的增加顺序提供
-
decodeRadialGradient
protected final RadialGradientPaint decodeRadialGradient(float x, float y, float r, float[] midpoints, Color[] colors)
给定用于创建RadialGradientPaint的参数,此方法将创建并返回径向渐变画。 该方法的一个主要目的是避免创建一个RadialGradientPaint,其中半径是非正的。 在这种情况下,半径稍稍增加以避免0。- 参数
-
x
- x坐标 -
y
- y坐标 -
r
- 半径 -
midpoints
- 中点 -
colors
- 颜色 - 结果
- 一个有效的RadialGradientPaint。 此方法从不返回null。
- 异常
-
NullPointerException
- 如果midpoints
数组为空,或colors
数组为空 -
IllegalArgumentException
- 如果r
为非正数,或midpoints.length != colors.length
或colors
小于2,或midpoints
值小于0.0或大于1.0,或midpoints
不提供严格增加的顺序
-
getComponentColor
protected final Color getComponentColor(JComponent c, String property, Color defaultColor, float saturationOffset, float brightnessOffset, int alphaOffset)
从给定的JComponent获取颜色属性。 首先检查一个getXXX()
方法,如果这样做失败,则检查具有密钥property
的客户端属性。 如果仍然无法返回颜色,则返回defaultColor
。- 参数
-
c
- 从中获取颜色属性的组件 -
property
- bean样式属性或客户端属性的名称 -
defaultColor
- 如果从组件中没有获得颜色,则返回的颜色。 -
saturationOffset
- 附加地修改返回颜色的HSB饱和度分量(如果返回默认颜色则忽略)。 -
brightnessOffset
- 相加地修改返回颜色的HSB亮度分量(如果返回默认颜色则忽略)。 -
alphaOffset
- 附加地修改返回颜色的ARGB alpha分量(如果返回默认颜色则忽略)。 - 结果
- 从组件或defaultColor获取的颜色
-
-