Opa galera… a duvida é a seguinte:
Tem como colocar um fundo em degradê sem ser imagem? Assim como o fundo do gerenciador de downloads da sun? que começa com azul claro e vai escurecendo
Abraços
Opa galera… a duvida é a seguinte:
Tem como colocar um fundo em degradê sem ser imagem? Assim como o fundo do gerenciador de downloads da sun? que começa com azul claro e vai escurecendo
Abraços
tem como colocar sim veio
Só sobrescrevendo o método PaintComponent de um JPanel, ou o Paint de um JFrame.
Eu prefiro a primeira opção.
Observe:
[code]import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import javax.swing.JPanel;
public class JGradientPanel extends JPanel {
private Color finalColor;
private Color initialColor;
public JGradientPanel(Color initialColor, Color finalColor) {
if (initialColor == null)
throw new IllegalArgumentException("Invalid initial color!");
if (finalColor == null)
throw new IllegalArgumentException("Invalid final color!");
this.initialColor = initialColor;
this.finalColor = finalColor;
}
public void setInitialColor(Color color) {
this.initialColor = color;
invalidate();
}
public void setFinalColor(Color color) {
this.finalColor = color;
invalidate();
}
public Color getInitialColor() {
return initialColor;
}
public Color getFinalColor() {
return finalColor;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
if (!isOpaque()) {
return;
}
GradientPaint paint = new GradientPaint(
new Point2D.Float(getWidth() / 2, 0), initialColor,
new Point2D.Float(getWidth() / 2, getHeight()), finalColor);
g2d.setPaint(paint);
g2d.fillRect(0, 0, getWidth(), getHeight());
g2d.dispose();
}
}[/code]
Para testar:
import java.awt.Color;
import javax.swing.JFrame;
public class Teste {
public static void main(String[] args) {
JFrame frame = new JFrame();
JGradientPanel panel = new JGradientPanel(Color.WHITE, Color.BLUE);
frame.setContentPane(panel);
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
}