【问题标题】:How to create a custom Java Swing GUI Component with a shape and gradient如何创建具有形状和渐变的自定义 Java Swing GUI 组件
【发布时间】:2011-07-25 13:26:08
【问题描述】:

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

我需要创建这样的东西:

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

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

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

谢谢!

【问题讨论】:

  • 您的 StorageStatus 是静态的(如果发生动作则绘制)或动态的(周期性地基于某个 Timer)

标签: java swing user-interface


【解决方案1】:

如果您要准确复制该云,我认为您将需要使用图像遮罩(例如 herehere)。

该过程需要 2 张图片:

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

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

  1. 创建一个新的缓冲图像
  2. 然后以您想要的样式绘制绿色填充条(例如,如图所示倾斜)
  3. 将图像蒙版复制到此
  4. 将此新图像绘制到屏幕上,并将蒙版应用为described here
  5. 将云轮廓图像绘制到屏幕上

这需要你一个小时左右的时间来整理,所以我不会为你做。试一试,如果您遇到问题(或不理解我刚刚描述的任何内容),请具体询问。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 能否请您在此处发布代码 sn-p,或详细说明您的答案,谢谢
      • 我想您应该熟悉如何在 JLabel 中显示图标。子类化一个图标,给它一个百分比属性并自己绘制它应该不会太难,我猜。
      【解决方案4】:

      这没有帮助吗? Java gradient label example

      如果你懂(或可以翻译)葡萄牙语,还有this discussion with a solution at the end

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 1970-01-01
        • 2010-10-23
        • 2022-11-17
        • 1970-01-01
        相关资源
        最近更新 更多