JPanel如何制作垂直渐变?

How to make JPanel vertical gradient?

如何制作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);
        }
    });

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 更改

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