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 :

[SWING] Modifier l'apparence de certains composants


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut [SWING] Modifier l'apparence de certains composants
    Bonjour à tous!
    Voilà, je suis en train de développer une nouvelle interface Java et j'aurais voulu modifier l'apprence de certains composants de mon interface... je m'explique: je voudrais par exemple arrondir les angles de mes boutons ou encore arrondir les onglets de mon JTabbedPane!

    En fait, au début je voulais utiliser un nouveau Look and Feel mais le problème est que je ne veux pas changer l'apparence de tous mes composants donc j'aurais voulu savoir dans un premier temps si c'était possible et si il existait des méthodes qui permettent cela? J'aurais donc voulu me passer d'un nouveau Look and feel...
    Si ce que je demande n'est pas possible, pouvez vous me donner des conseils (par exemple sur la façon de créer son propre Look and Feel)?

    Merci d'avance et bon après-midi à tous...

  2. #2
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Tu peux faire des "bouts" de look and feel. Le plus simple est d'étendre une des classes *UI. Par exemple pour un bouton, BasicButtonUI ou MetalButtonUI. Ensuite il faudra faire monBouton.setUI(MaButtonUI.getUI()). Il y a tout un tas de détails mais c'est en gros la solution la plus réutilisable.

    Une autre solution, que j'affectionne particulièrement, est d'étendre les composants Swing et de surcharger leur méthode paintComponent(). Cette technique est cependant parfois difficile pour des composants complexes. De plus cela ne permet pas de modifier des composants composés. Par exemple un JScrollPane contient des JScrollBar. Pour changer l'apparence de ces dernières il est bien plus facile de passer par un délégué d'UI (les *UI mentionnées précédemment).

    J'ai écrit un article sur le sujet qui se trouve là-dedans : http://www.progx.org/users/Gfx/articles/java.zip

    Cherche l'article situé dans le dossier "GUI". Il est court mais présente un exemple de délégué.

    Dans peu de temps maintenant, Sun et moi-même allons diffuser le code source de l'application dont tu peux voir des captures ci-dessous :









    Pour créer cette interface j'ai utilisé les deux techniques citées précédemment suivant mes besoins. Les boutons sont par exemples des classes qui héritent de JButton. Les barres de défilement utilisent au contraire des délégués d'UI. Cela devrait faire un bon exemple pour montrer comment créer une interface vraiment personnalisée en Swing

    Parmi les composant Swing utilisés dans ces captures il y a : JButton, JList, JPanel, JScrollBar, JScrollPane, JTextField, JSlider et JFrame.
    Romain Guy
    Android - Mon livre - Mon blog

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut
    OK, merci pour tes explications!

    Par contre, je ne vois pas exactement comment faire pour faire des "bouts" de L&F... tu me dis par exemple d'étendre la classe MetalButtonUI mais c'est là que ne vois pas comment faire! Tu peux m'aider? Ou me donner un tout petit exemple?

    Merci beaucoup...

  4. #4
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Je rebondis par rapport à tout ce que dit Gfx...

    Et qu'en est-il par rapport à l'usage du Look&Feel Synth ? Qu'en penses-tu ? Est-ce une approche possible pour faire ce que cherche rprom, et dans ce cas pourquoi ne l'as-tu pas employé dans ton appli ?

  5. #5
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Parce que j'ai bossé sur Synth pendant un an chez Sun et que j'en avais marre de l'utiliser alors j'ai fait autrement Je voulais en outre essayer une autre approche, par injection de ressource. Le résultat est le projet Fuse : http://fuse.dev.java.net

    Exemple d'utilisation de Fuse ici : http://www.jroller.com/page/gfx?entry=fuse_swing_demo
    Romain Guy
    Android - Mon livre - Mon blog

  6. #6
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Mais, à part le fait qu'on en ait marre de Synth après un an de travail dessus, penses-tu que ce soit une bonne approche, disons, les 6 premiers mois ? Quels sont ces avantages et inconvénients, tels que tu les a vus à, disons, 10 mois de travail ? (plaçons nous tout de même avant la phase de rejet )

  7. #7
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    J'en avais marre non pas en tant qu'utilisateur de Synth, mais en tant que développeur de Synth, c'est différent ;-)

    Je pense que Synth est une très bonne approche pour faire une nouvelle apparence pour une application, surtout quand il s'agit de branding pour un client. Avec un designer et un développeur on doit pouvoir faire un look Synth complet et de qualité en 2/3 semaines. L'inconvénient de Synth, qui n'en est pas vraiment un puisque ce n'est pas son rôle, est qu'il ne permet pas de modifier le feel des applications, juste le look. Synth demande aussi une bonne connaissance de Swing. Par exemple pour modifier l'apparence d'une combo box, il faut modifier l'apparence d'un textfield, d'un arrowbutton, d'un popupmenu et d'une scrollbar (lis mon blog sur comment faire une scrollbar pour mieux comprendre ce que je veux dire : http://www.jroller.com/page/gfx?entry=synth_subtleties)

    Je te conseille de jeter un oeil à Synthetica. Ce projet (dispo en versions non commerciale gratuite et commerciale payante) apporte à Java 1.5 toutes les corrections et modifications que nous avons implémenté dans Java 1.6. L'auteur propose aussi pas mal de skin très jolies. Cela permet de démarrer sur de bonnes bases.
    Romain Guy
    Android - Mon livre - Mon blog

  8. #8
    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
    >J'en avais marre non pas en tant qu'utilisateur de Synth, mais en tant que développeur de Synth, c'est différent ;-)

    moi j'aimerai bien apprendre Synth mais j'ai jamais trouver de bonne documentation. avec que la javadoc c'est un peu trop peu.
    la documentation est prevue pour?
    et un l&f completement baser sur synth prevus pour?


    >Le plus simple est d'étendre une des classes *UI. Par exemple pour un bouton, BasicButtonUI ou MetalButtonUI. Ensuite il faudra faire monBouton.setUI(MaButtonUI.getUI()). Il y a tout un tas de détails mais c'est en gros la solution la plus réutilisable.

    moi depuis que je fais du swing (environ 6 mois) chaque fois qu'un truc me plais pas dans un composant swing, je fais des chose comme sa; j'extend le Basic*UI et redessine comme je veux ou alors j'extend de JComponent et crer aussi un UI delegate pour ce nouveau composant...
    ca marche bien.
    il y a quelque jour sur ce forom quelqu'un demandait comment on peux changer l'apparence des tooltip. j'ai fais de cette facon.
    premiere remarque "combien de code pour si peu" c'est vrai c'est un peu de code il avait raison

    maintenant qu'est ce que j'ai compris de Synth c'est que ca permettrait de faire beaucoup de chose sur le look des composant rien qu'en passant par des fichier xml. j'ai essayer une fois de changer le design d'un JTextField grace a Synth j'avais un fichier xml enorme et j'avais pas encore le resultat que je voulait.
    J'aurais extend un BasicTextFieldUI ou meme TextUI j'aurais fais le truc beaucoup plus vite grace a des effets java2d.

    en plus d'apres que ce que j'ai lu (je lit beaucoup ) les performance des application swing sont diminuer a cause de synth. si ceux qui discute de swing (alors qui connaisse pas swing) la http://www.developpez.net/forums/showthread.php?t=861 voit que synth ralenti les application swing immagine alors la reputation de swing qui pour eux est deja lent???
    c'est normal je supose que c'est plus lent a cause du parsing xml?


    alors quel est le vrai apport de Synth et pourquoi aucun l&f complet en synth est fourni comme exemple de chez sun?pourquoi y'a pas de documentation?

  9. #9
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    moi j'aimerai bien apprendre Synth mais j'ai jamais trouver de bonne documentation. avec que la javadoc c'est un peu trop peu.
    la documentation est prevue pour?
    Il y a une documentation dont les liens se trouvent dans la javadoc. Je ne parle pas des javadoc des classes mais des documentations supplémentaires. Il y aussi des tutoriaux de Scott Violet et d'IBM sur Synth.

    et un l&f completement baser sur synth prevus pour?
    Rien d'officiel n'est prévu.

    maintenant qu'est ce que j'ai compris de Synth c'est que ca permettrait de faire beaucoup de chose sur le look des composant rien qu'en passant par des fichier xml. j'ai essayer une fois de changer le design d'un JTextField grace a Synth j'avais un fichier xml enorme et j'avais pas encore le resultat que je voulait.
    Modifier un JTextField ne demande que quelques lignes de XML avec Synth.

    en plus d'apres que ce que j'ai lu (je lit beaucoup ) les performance des application swing sont diminuer a cause de synth.
    Je n'ai jamais constaté cela. Le lancement peut être plus lent à cause du parsing XML mais pour le reste... Synth utilise des images. Afficher une image est bien plus rapide que de dessiner des dégradés ou afficher certaines formes avec Java2D. Depuis Java 1.5 ces images peuvent en outre être accélérées (astuce : utilisez des PNG en 32 bits).

    alors quel est le vrai apport de Synth et pourquoi aucun l&f complet en synth est fourni comme exemple de chez sun?pourquoi y'a pas de documentation?
    Un bon look and feel écrit en Java nécessite des mois de travail. Un book look écrit avec Synth nécessite quelques semaines. Il n'y aucun look Synth fournit par Sun car l'équipe Swing est débordée et qu'il est en outre difficile d'obtenir un designer graphique.
    Romain Guy
    Android - Mon livre - Mon blog

  10. #10
    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
    salut gfx,



    je lis ton blog de temp en temp autre et j'aime bien les trucs que tu met sur swing.

    tu sais pas mais je suis que etudiant et j'ai pas une tres grande experience de Swing.

    j'utilise swing que depuis environ 6 mois. j'ai fait un stage ou j'ai utiliser swing et j'ai du faire une petite application pour l'ecole.





    >Il y a une documentation dont les liens se trouvent dans la javadoc. Il y aussi des tutoriaux de Scott Violet et d'IBM sur Synth.



    quand j'ai essayer de voir sur Synth, j'ai trouver aussi ces deux liens

    http://javadesktop.org/articles/synth/index.html

    http://www-128.ibm.com/developerwork...brary/j-synth/



    mais c'est pas possible de presenter synth en deux pages? les deux pages sont tres simples. je crois pas que synth se limite a qu'est ce qu'il y a dans ces deux page et c'est tout.



    > Modifier un JTextField ne demande que quelques lignes de XML avec Synth.

    ok alors alons y :-)


    un tout bete exemple j'arrive pas a le faire fonctionner comme je veut.

    j'ai un textfield avec une couleur de BACKGROUND et une couleur de TEXT_FOREGROUND

    je veux que quand le textfield a le focus ces 2 couleur change

    voila comment je fait

    mon premier fichier :MyFrame.java
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.HeadlessException;
    import java.awt.Insets;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.text.ParseException;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.plaf.synth.SynthLookAndFeel;
     
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     * Date: 21-Jun-2006
     * Time: 18:47:21
     * To change this template use File | Settings | File Templates.
     */
    public class MyFrame extends JFrame {
        private JTextField myTextField = null;
     
        public MyFrame(String s) throws HeadlessException {
            super(s);
            setLayout(new GridBagLayout());
     
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.anchor = GridBagConstraints.BASELINE;
            gbc.insets = new Insets(5, 5, 5, 5);
     
            myTextField = new JTextField();
            myTextField.setMinimumSize(new Dimension(150, 35));
            myTextField.setPreferredSize(new Dimension(150, 35));
            add(myTextField, gbc);
            add(new JButton("a button"), gbc);
            setSize(400, 300);
        }
     
     
        public static void main(String[] args) {
     
            Runnable runnable = new Runnable() {
                public void run() {
                    SynthLookAndFeel synth = new SynthLookAndFeel();
                    try {
                        synth.load(MyFrame.class.getResource("mySynth.xml"));
                        UIManager.setLookAndFeel(synth);
                    } catch (ParseException e) {
                        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                    } catch (IOException e) {
                        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                    } catch (UnsupportedLookAndFeelException e) {
                        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                    }
                }
            };
     
            try {
                SwingUtilities.invokeAndWait(runnable);
            } catch (InterruptedException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            } catch (InvocationTargetException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
     
            runnable = new Runnable() {
                public void run() {
                    MyFrame synthFrame = new MyFrame("Synth Test...");
                    synthFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    synthFrame.setLocationRelativeTo(null);
                    synthFrame.setVisible(true);
                }
            };
            SwingUtilities.invokeLater(runnable);
        }
     
    }
    mon deuxieme fichier: mySynth.xml
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    <synth>
        <!-- Background panel (state all) -->
        <style id="panel">
            <object id="bckgPanel" class="MyPainter"/>
     
            <object class="javax.swing.plaf.ColorUIResource" id="color1">
                <int>113</int>
                <int>113</int>
                <int>113</int>
            </object>
            <defaultsProperty key="Panel.radCol1" type="idref" value="color1"/>
     
            <object class="javax.swing.plaf.ColorUIResource" id="color2">
                <int>232</int>
                <int>237</int>
                <int>128</int>
            </object>
            <defaultsProperty key="Panel.radCol2" type="idref" value="color2"/>
     
            <object class="javax.swing.plaf.ColorUIResource" id="color3">
                <int>212</int>
                <int>214</int>
                <int>186</int>
            </object>
            <defaultsProperty key="Panel.radCol3" type="idref" value="color3"/>
     
            <painter method="panelBackground" idref="bckgPanel"/>
        </style>
        <bind style="panel" type="region" key="Panel"/>
     
        <!-- look for textfields -->
        <style id="textfield">
            <object id="myBorderTextField" class="MyPainter"/>
            <painter method="textFieldBorder" idref="myBorderTextField"/>
     
            <insets top="4" left="32" bottom="4" right="6"/>
     
            <state>
                <font name="Verdana" size="20"/>
                <color value="#FFFFFF" type="TEXT_FOREGROUND"/>
                <color value="#2E1E56" type="BACKGROUND"/>
            </state>
     
            <state value="FOCUSED">
                <color value="#7e7ab2" type="BACKGROUND"/>
                <color value="RED" type="TEXT_FOREGROUND"/>
            </state>
        </style>
        <bind style="textfield" type="region" key="TextField"/>
     
        <!-- look for buttons -->
        <style id="button">
            <!-- <state value="DEFAULT">-->
                <object id="myBorderButton" class="MyPainter"/>
                <font name="Verdana" size="20"/>
                <painter method="buttonBorder" idref="myBorderButton"/>
                <insets top="4" left="6" bottom="4" right="6"/>
            <!-- </state>-->
     
            <state value="MOUSE_OVER">
                <!-- <imagePainter path="test.png" sourceInsets="2 2 2 2" paintCenter="false" stretch="true"/>-->
                <font name="Verdana" size="12" style="BOLD ITALIC"/>
            </state>
     
            <state value="PRESSED">
                <color value="PINK" type="BACKGROUND"/>
            </state>
        </style>
        <bind style="button" type="region" key="Button"/>
    </synth>
    mon troisieme fichier: MyPainter.java
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.RadialGradientPaint;
     
    import javax.swing.UIManager;
    import javax.swing.plaf.synth.SynthContext;
    import javax.swing.plaf.synth.SynthPainter;
     
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     * Date: 21-juin-2006
     * Time: 18:49:21
     * To change this template use File | Settings | File Templates.
     */
    public class MyPainter extends SynthPainter {
     
     
        private float[] dist = {0.0f, 0.2f, 1.f};
        private RadialGradientPaint painter = null;
        private BasicStroke bsButtonBorder = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 1, new float[]{ 3, 3 }, 0.f);
        private BasicStroke bsTextFieldBorder = new BasicStroke(2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 10, new float[]{ 20, 5, 10, 5 }, (float)Math.random());
     
     
        @Override
        public void paintPanelBackground(SynthContext context, Graphics g, int x, int y, int w, int h) {
            Graphics2D g2d = (Graphics2D)g;
            Color[] colors = new Color[] {
                    UIManager.getColor("Panel.radCol1"),
                    UIManager.getColor("Panel.radCol2"),
                    UIManager.getColor("Panel.radCol3"),
            };
     
            if (painter ==null) {
                painter = new RadialGradientPaint((float)x + w/2, (float) y + h/2, (float) w, /*(float) h,*/ dist, colors);
            }
            g2d.setPaint(painter);
            g2d.fillRect(x, y, w, h);
        }
     
        @Override
        public void paintTextFieldBorder(SynthContext context, Graphics g, int x, int y, int w, int h) {
            //super.paintTextFieldBorder(context, g, x, y, w, h);    //To change body of overridden methods use File | Settings | File Templates.
     
            Graphics2D g2d = (Graphics2D)g;
            g2d.setColor(Color.GREEN);
     
            g2d.setStroke(bsTextFieldBorder);
     
            g2d.drawRect(x, y, w-1, h-1);
            g2d.dispose();
        }
     
        @Override
        public void paintButtonBorder(SynthContext context, Graphics g, int x, int y, int w, int h) {
            Graphics2D g2d = (Graphics2D)g;
            g2d.setColor(Color.RED);
     
            g2d.setStroke(bsButtonBorder);
     
            g2d.drawRect(x, y, w-1, h-1);
            g2d.dispose();
        }
    }
    ce bete truc fais deja pas qu'est ce que je veux. la couleur du texte est toujours en blanc mais le BACKGROUND change.
    alors ca sert a rien d'essayer de changer (DISABLED, MOUSE_OVER...)les autre etat si deja ca ca marche pas.


    > Synth utilise des images.
    Comment ca? Synth utilise toujour de image ou seulement quand on utilise des imagePainter? j'ai pas compri qu'est ce que tu veut dire.


    je me demandait aussi comment on peut par exemple definir plusieur style sur des composants?
    par exemple j'ai deux type de textField dans une application. j'ai par exemple des textField pour saisir des parametre de recherche et des autres textField pour l'affichage pour des autre champ. Je veux que tout les critere dans toute l'application soit d'une certaine facon, et tout les autre d'une autre facon? Dans Synth par Component tu peut definir un style par etat pour ce composant. Alors comment je peux faire si je veux plusieurs style?

    > Un book look écrit avec Synth nécessite quelques semaines
    je voit bien que ce sera plus rapide que d'ecrire tout un look un feel mais je crois toujour que la solution la plus rapide et plus efficace est d'extend des ComponentUI et de les painter comme on veut puis tu fais des setUI sur tes JComponent.


    je suis toujours pas convaicu de Synth.
    et pour la documentation, compare un peu Microsoft avec son .Net et Sun avec Java. une documentation sur synth serait vraiment la bienvenue :-)
    y'a pas que Synth qui est mal documenter en java mais c'est un aute sujet ca :-)

  11. #11
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Je n'ai pas dit que la documentation était parfaite ni même excellente, j'ai dit qu'il y en avait et qu'elle m'avait suffit à faire des petits thèmes avec Synth.

    Tu peux créer plusieurs thèmes pour un seul composant, il suffit de ne pas utiliser <bind style="textfield" type="region" key="TextField"/> mais <bind style="textfield" type="region" name="SearchField"/> et de faire un setName("SearchField") tu ton composant.

    J'utilise Swing depuis sa version 0.7, avant que cela ne soit intégré au JDK. J'ai écrit *beaucoup* de code Swing et j'ai étendu *beaucoup* de composants. Je maintiens que Synth permet de travailler beaucoup plus vite, notamment quand, comme moi, tu fais d'abord ton design dans un outil comme Photoshop. Il suffit d'extraire les images et des les réutiliser avec les <imagePainter />.

    P.S : Je suis également étudiant
    Romain Guy
    Android - Mon livre - Mon blog

  12. #12
    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
    > j'ai dit qu'il y en avait et qu'elle m'avait suffit à faire des petits thèmes avec Synth.

    ouaip j'y arrive aussi.
    mais y'a parfoit des truc que je me demande vraiment pourquoi ca marche pas.
    comme l'exemple que j'ai mi la. pourtant c'est con comme truc. tu trouve pas?

    > P.S : Je suis également étudiant
    je sais, ton blog est dans planetjdk que je lit assez souvent ;-)

  13. #13
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Essaye <state value="SELECTED and FOCUSED">
    Romain Guy
    Android - Mon livre - Mon blog

  14. #14
    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
    ben ca peut pas marcher
    quand le state est SELECTED je veut une couleur
    et quand c'est FOCUSED je veut une autre couleur.

    si je mets SELECTED and FOCUSED j'aurai toujour les meme couleur dans les deux cas?

  15. #15
    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
    j'ai quand meme essayer, ca marche pas

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

Discussions similaires

  1. [D7] Modifier l'apparence des composants
    Par dacid dans le forum Delphi
    Réponses: 7
    Dernier message: 09/05/2007, 09h57
  2. [C#] Comment modifier l'apparence d'un DataGrid?
    Par DBBB dans le forum ASP.NET
    Réponses: 8
    Dernier message: 15/07/2005, 14h41
  3. [Swing] récupérer une image d'un composant
    Par klemouf dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/09/2004, 10h24
  4. Réponses: 4
    Dernier message: 27/05/2004, 15h00
  5. [Swing] Mettre une police à tous les composants
    Par MrEddy dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/05/2004, 15h21

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