Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как сделать градиентную заливку


Автор: LSD 2.11.2004, 13:02
Спасибо ElectricalStorm за предоставленную информацию

В виде примера можно увидеть.

Код
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GradientPanel extends JPanel {
    private Color color1;
    private Color color2;

    public GradientPanel() {
        this(Color.blue, Color.green);
    }

    public GradientPanel(Color c1, Color c2) {
        super();
        this.color1 = c1;
        this.color2 = c2;
    }

    public void setColor1(Color c1) {
        this.color1 = c1;
        repaint();
    }

    public void setColor2(Color c2) {
        this.color2 = c2;
        repaint();
    }     // Overloaded in order to paint the background

    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        int w = getWidth();
        int h = getHeight();
        GradientPaint gradient = new GradientPaint(0, 0, color1, w, h, color2, true);
        g2.setPaint(gradient);
        g2.fillRect(0, 0, w, h);
    }

    public static void main(String[] args) {
        final GradientPanel pGradient = new GradientPanel();
        Color[] colors = {createColor("Black", Color.black), createColor("Blue", Color.blue),
                          createColor("Green", Color.green), createColor("yellow", Color.yellow),
                          createColor("orange", Color.orange), createColor("red", Color.red),
                          createColor("white", Color.white)};
        JComboBox c1 = new JComboBox(colors);
        c1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JComboBox combo = (JComboBox) e.getSource();
                Color c = (Color) combo.getSelectedItem();
                pGradient.setColor1(c);
            }
        });
        JComboBox c2 = new JComboBox(colors);
        c2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JComboBox combo = (JComboBox) e.getSource();
                Color c = (Color) combo.getSelectedItem();
                pGradient.setColor2(c);
            }
        });
        JPanel pColors = new JPanel(new GridLayout(0, 2));
        pColors.add(c1);
        pColors.add(c2);
        c1.setSelectedItem(colors[1]);
        c2.setSelectedItem(colors[2]);
        JFrame f = new JFrame("Gradient test");
        f.setSize(300, 200);
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.getContentPane().add(pColors, BorderLayout.NORTH);
        f.getContentPane().add(pGradient, BorderLayout.CENTER);
        f.setVisible(true);
    }

    private static Color createColor(String name, Color c) {
        final String colorname = name;
        Color color = new Color(c.getRed(), c.getGreen(), c.getBlue()) {
            private String name = colorname;

            public String toString() {
                return name;
            }
        };
        return color;
    }
}


Выглядеть это будет так:
[IMG]http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=download_file&articleid=108&attachid=1[/IMG]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)