IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Intégration de Gradient multicouleur dans un (j)panel


Sujet :

AWT/Swing Java

  1. #1
    Membre actif
    Avatar de Ecosmose
    Homme Profil pro
    Archi SI / Soft / Réseau / SCADA /Automate
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Archi SI / Soft / Réseau / SCADA /Automate
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Points : 214
    Points
    214
    Par défaut Intégration de Gradient multicouleur dans un (j)panel
    Bonjour !

    J'ai cherché une technique pour créer un gradient de PLUSIEURS couleurs comme le montre l'image ci-dessous...

    J'ai aussi essayé de trouver le code source de JColorChooser afin de récupérer la fonction qui fabrique ce dégradé qui se situe dans l'onglet HSB de JColorChooser...n'aboutit que sur des constantes (systèmes JVM je pense)

    je pense qu'une solution serait de superposé plusieurs zones de gradient qui n'aurait qu'une seule couleur 'vive' et se dissiperait vers la meme couleur mais transparente...

    Mais bon puisque JAVA est open source il y a surement un moyen de trouver cette fonction non ?

    j'ai préféré poster mon interrogation avant de commencer à coder...j'ai bien fait je pense, seulement je suis un peu honteux de la poster avant mêm d'avoir acquérit les techniques de gradient...
    je vais donc étudier ca kle temps de vos réponse...merci
    Images attachées Images attachées  

  2. #2
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    Java 6 (Mustang) a tout ce ke ta besoins :-)

    teste ca et tu vas voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.LinearGradientPaint;
    import java.awt.EventQueue;
    import java.awt.geom.Point2D;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
     
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     * Date: 16-mars-2007
     */
    public class LinearGradientPainterTesting extends JPanel {
     
        Point2D start = new Point2D.Float(0, 0);
        float[] dist = {0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f};
        Color[] colors = {Color.YELLOW, Color.ORANGE, Color.RED, Color.MAGENTA, Color.BLUE, Color.BLACK};
        LinearGradientPaint paint = null;
     
        protected void paintComponent(Graphics g) {
            Graphics2D g2d;
            if (g instanceof Graphics2D) {
                g2d = (Graphics2D) g;
            } else {
                System.out.println("Error");
                return;
            }
     
            paint = new LinearGradientPaint(start, new Point2D.Float(0, getHeight()), dist, colors);
     
            g2d.setPaint(paint);
            g2d.fillRect(0, 0, getWidth(), getHeight());
        }
     
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    JFrame myFrame = new JFrame("Linear Gradient Painter");
                    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    myFrame.add(new LinearGradientPainterTesting());
                    myFrame.setSize(640, 480);
                    myFrame.setVisible(true);        
                }
            });
        }
    }
    LinearGradientPaint & RadialGradientPaint ont ete ajouter pour faire ce que tu demande :-)

  3. #3
    Membre actif
    Avatar de Ecosmose
    Homme Profil pro
    Archi SI / Soft / Réseau / SCADA /Automate
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Archi SI / Soft / Réseau / SCADA /Automate
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Points : 214
    Points
    214
    Par défaut
    Yes excellent !!!!!!!!!!!!!!!!

    je ne savais que JAVA 6 avait intégré de tel outils !!! (au fait qu'st ce que mustang ? version du JDK ?)

    Ou as tu trouvé ces infos sur les outils dispo de JAVA 6 (veille technologique ? expérience ?)

    y as juste une syntaxe qui m'interpelle c'est les 'f' dans l'initialisation du tableau des distance ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dist = {0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f};
    sinon merci bbclone c'est exactement ce que je cherchais...

    En ce qui concerne les sources des objets graphiques ou autres est il possible d'obtenir leurs codes sources ? (je pense que oui car c'est de l'open source) mais je n'ai pas réussi à trouver celui du gradient de JColorChooser..peut etre ouvre t il une image mais cela m'étonnerait...

  4. #4
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    mustang = nom de code de java 6 (comme tiger c'etait le nom de code de java 5, dolphin java 7, merlin java 1.4...)

    j'utilise java 6 depuis que j'ai commencer a apprendre java.
    pendant son developement y'avais souvent des blogs maj sur les nouveaux features disponible :-)
    sinon, y'a aussi la javadoc.
    http://java.sun.com/javase/6/docs/ap...ientPaint.html

    pour les 'f', l'api demande un tableau de float. je sais pas moi pourquoi ils on pris float et pas des double :-S

    pour le source des classe, quand tu instale un jdk il te propose d'installer les sources ou pas. si tu as installer les source tu as un gros fichier src.zip dans ton $jdk_home

  5. #5
    Membre actif
    Avatar de Ecosmose
    Homme Profil pro
    Archi SI / Soft / Réseau / SCADA /Automate
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Archi SI / Soft / Réseau / SCADA /Automate
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Points : 214
    Points
    214
    Par défaut
    Excellente réponse décidemment tu cadres bien mes interrogations...

    merci pour le tuyau JDK je cherchais en effet de ce coté là...

    le 'f' c'est donc une précision de type qui impose les floats...peut etre est ce pour la gestion des valeurs infinis (NaN) je ne sais pas si les double savent le gérer...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    J'ai aussi utulisé le linearGradientPaint, il marche très bien quand je lance l'appli avec netbean, mais quand je lance le .jar, il plante sur le linearGradientPaint.
    Est ce vous savez pourquoi ?
    Merci

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    voila l'erreur qu'il me met :
    java.lang.ClassNotFoundException: java.awt.LinearGradientPaint not found in
    gnu.gcj.runtime.SystemClassLoader{urls=[filerojet_A.jar],
    parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
    Qand j'enlève le linearGradientPaint, l'appli fonctionne

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est tout simple, en ligne de commande tu utilises GCJ et non la JVM Sun (le LinearGradientPaint date de java 6 alors que gcj en est en 1.4 ou en 1.5)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    ok, merci, donc il faut que j'installe JVM ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    j'ai télécharger Jre 6.1 (le jre 6.1 pour linux sans rpm sur le site sun)
    J'ai ensuite fait un chmod sur le .bin
    Mais lorsque que je réutilise ma commande il plante encore ?
    Est ce qu'il y a qulque chose que je n'est pas fait ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    re-bonjour

    J'ai telecharger sur le site de sun le jre1.6.0. J'ai regarder des tuto pour changer le GCJ en JVM, mais je n'y arrive pas !
    Merci de votre aide

  12. #12
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    c'est relativement simple, tu vires les symlinks portant sur GCJ qui se trouvent dans /usr/bin (de mêmoire java, javac, jar, javah, javaw, javaws) et tu (rm /usr/bin/java par exemple) recrées ces liens (ln -s /usr/java/chemin/vers/executable/Sun/java /usr/bin/java) pour tous ces progs

    ++
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Merci beacoup, ca marche nickel !!
    bonne fin de journée
    a ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/02/2006, 15h12
  2. Réponses: 11
    Dernier message: 30/01/2006, 16h26
  3. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41
  4. Intégration d'un SDK dans Visual Basic
    Par <-NicO-> dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/02/2005, 22h53
  5. Réponses: 7
    Dernier message: 30/11/2004, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo