如何使用形状和渐变创建自定义Java Swing GUI组件

时间:2011-07-25 13:26:08

标签: java swing user-interface

我必须在我的JFrame上创建自定义组件,组件将显示该用户的存储状态,存储将以百分比形式显示。

我需要创建这样的东西:

Image

我尝试使用自定义JLabel来创建标签,然后从左到右对该标签着色,但我无法创建云形状Label,然后根据变量值填充该标签。

我该怎么做?最好的方法是什么?

有一次我以为我应该使用一系列图片来显示用户存储的状态。

谢谢!

4 个答案:

答案 0 :(得分:5)

如果您要完全复制该云,我认为您将需要使用图像掩码(示例herehere)。

该过程需要2张图片:

  • 云轮廓(蓝色部分)
  • 图像蒙版是云的形状,可能是黑色外部和白色内部

然后您的绘图过程,每次%存储更改时您必须执行的操作:

  1. 创建新的缓冲图片
  2. 以您想要的样式绘制绿色填充条(例如,如此图像中的倾斜)
  3. 将图像蒙版复制到此
  4. 将此新图像绘制到屏幕上,并将蒙版应用为described here
  5. 将云轮廓图像绘制到屏幕
  6. 这需要一个小时左右的时间才能放在一起,所以我不打算为你做。如果您遇到问题(或者我不理解我刚刚描述的任何内容),那就去问问吧。

答案 1 :(得分:3)

您可以使用GlyphVector#getGlyphOutline()获取Unicode字符的形状,例如☁\ u2601,并使用GradientPaint填充它。

答案 2 :(得分:2)

您可以使用JLabel和从Icon派生的自定义实现的类来实现。

答案 3 :(得分:1)

这没有帮助吗? Java gradient label example

如果您理解(或可以翻译)葡萄牙语,那么还有this discussion with a solution at the end