Это должно возможно с GradientPaint
Somthing так:.
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
Polygon p = new Polygon();
p.addPoint(0,100);
p.addPoint(100,100);
p.addPoint(100,200);
p.addPoint(100,200);
GradientPaint gp = new GradientPaint(0.0f, 100.0f, Color.red,
200.0f, 200.0f, Color.green, true);
g2.setPaint(gp);
g2.fill(p);
}
для обеспечения прозрачности необходимо включить параметры для альфа-канал.
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
alpha));
Для рабочих примеров см this article
Я не уверен, как это сделать, но вы не можете использовать более яркий цвет, чем той, которая используется, чтобы нарисовать линию, чтобы сделать еще одну линию, которая будет выступать в качестве тень, сделав что-то вроде yourChosenColor.brighter(). более яркое или темное(). darker(), которое вы предпочитаете. –