1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
public class MyPanel extends JPanel {
/** Default horizontal gradient.
*/
private GradientPaint gradient = new GradientPaint(0, 0, Color.BLUE, 500, 0, Color.CYAN);
/** @inheritDoc
*/
@Override voir paintComponent(Graphics graphics) {
// If the gradient has non-opaque color, better call the paintComponent of the parent class.
super.paintComponent(graphics);
Dimension size = getSize();
int width = size.width;
int height = size.heigth;
gradient = adaptGradient(gradient, width);
Graphics2D g2 = (Graphics2D)graphics;
g2.setPaint(gradient);
g2.fillRect(0, 0, width, height);
}
/** Adapt gradient to new width.
* @param gradient The source gradient, must not be <code>null</code>.
* @param width The new width.
* @return A gradient adpated for the given size, may be the source gradient, never <code>null</code>.
*/
private GradientPaint adaptGradient(GradientPaint gradient, int width) {
GradientPaint result = gradient;
Point oldEnd = gradient.getPoint2();
// Adapt gradient to new size.
if (oldEnd.x != width) {
Point newEnd = new Point(width, oldEnd.y);
result = new GradientPaint(gradient.getPoint1(), gradient.getColor1(), newEnd, gradient.getColor2(), gradient.isCyclic());
}
return gradient;
}
} |
Partager