【问题标题】:How to make JPanel vertical gradient?如何使JPanel垂直渐变?
【发布时间】:2016-09-06 12:17:02
【问题描述】:

如何使JPanel 垂直渐变。我正在使用以下代码,但它是水平渐变。

  myPanel.setUI(new PanelUI()  {
        public void paint(Graphics g, JComponent c) {
            Graphics2D g2 = (Graphics2D) g;
            g2.setPaint(new GradientPaint(new Point(0, 0), Color.white,new Point(1612, 35), Color.black, false));
            g2.fillRect(0, 0, 1000, 35);
        }
    });

【问题讨论】:

  • 如果你不能结合 Java 文档弄清楚如何改变渐变的方向,你需要问问自己你是否真的适合编程..
  • 在创建第二个 Point 时尝试使用 0 而不是 1612。我还没有测试,我将把它留给你。
  • @OleV.V.谢谢。它的工作。

标签: java swing gradient


【解决方案1】:

docs 中,您使用的构造函数要求您提供 2 点和 2 种颜色:

public GradientPaint(Point2D pt1,
             Color color1,
             Point2D pt2,
             Color color2)

每个点都有自己的 XY 坐标,所以它看起来是水平的,因为你在代码中说要绘制从点 (0, 0) 到点 (1612, 35) 的渐变,但实际上它有点对角线

在这种情况下,如果您希望它完全垂直,请将 P2 上的 1612 更改为 0 或将 P1 上的 0 更改为 1612

它将根据该配置填充形状,我认为您会感到困惑,认为它应该使用渐变从(0, 0) 绘制到(1612, 35),但这些坐标仅用于渐变的配置而不是实际绘制其中

把这些坐标想象成一张笛卡尔地图,如果你从(0, 0)(10, 10) 画一条线会发生什么?这是一个对角线,现在如果你从(0, 0)(10, 0) 或从(10, 10)(20, 10) 绘制它会发生什么?这是一个水平笔划,如果从(0, 0)(0, 10) 或从(10, 10)(10, 20) 画一条线会发生什么?这是一个垂直的行程。看看每个例子的坐标变化是什么?

  • 对于对角线笔划,XY 坐标发生变化

  • 对于水平笔画,只需 X 更改

  • 仅适用于垂直笔划Y变化

所以,这就是你需要做的:)

【讨论】:

  • 解释。在此之前,我无法理解逻辑。
  • 我很高兴它有帮助 :) 我想在 “解释” 之前有一个“坦克你”(是的,我故意错过了 h);无论如何,快乐编程
猜你喜欢
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多