如何制作JPanel垂直渐变?

时间:2016-09-06 12:17:02

标签: java swing 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);
        }
    });

1 个答案:

答案 0 :(得分:3)

docs开始,您使用的构造函数会询问您2点和2种颜色:

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

每个点都有自己的XY坐标,因此它似乎是水平的,因为您在代码中说要绘制从点(0, 0)到点{{的点的渐变1}}但实际上它有点对角线

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

它将基于该配置填充形状,我认为你很困惑,认为它应该使用渐变从(1612, 35)绘制到(0, 0),但这些坐标仅用于渐变的配置不是它的实际绘画

想象一下这些坐标作为笛卡尔地图,如果你从(1612, 35)画一条线到(0, 0)会发生什么?这是一个对角线笔画,现在如果你从(10, 10)(0, 0)或从(10, 0)(10, 10)画出会发生什么?这是一个水平笔划,如果你从(20, 10)(0, 0)或从(0, 10)(10, 10)画一条线会发生什么?这是一个垂直笔画。看看每个例子的协调变化是什么?

  • 对于对角线笔画,(10, 20)X coords都会改变

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

  • 仅针对垂直笔划X更改

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