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

Agents de placement/Fenêtres Java Discussion :

Problème de UIManager


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut Problème de UIManager
    Bonjour à tous,

    Je viens de remarquer que la modification de l'apparence de ma Jframe ne fonctionne pas correctement.

    Mon projet comporte une class Main, qui ne fait que créer une nouvelle Fenetre, et donc ma classe Fenetre qui comporte tout le code de définition de mon interface , avec entre autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String lnfName = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
    		try {
    			UIManager.setLookAndFeel(lnfName);
    			SwingUtilities.updateComponentTreeUI(this);
    		} 
    		catch (ClassNotFoundException e) {e.printStackTrace();} 
    		catch (InstantiationException e) {e.printStackTrace();} 
    		catch (IllegalAccessException e) {e.printStackTrace();}
    		catch (UnsupportedLookAndFeelException e) {e.printStackTrace();}
    Le probléme et que lorsque que j'éxecute mon programme à partir de ma class Main, le théme aplliqué à ma fenêtre n'est pas celui attendu, par contre si je l'éxecute à partir de ma class Fenetre (je ne savais pas que cela était possible sans un main()...), le théme est bien celui que je veux.

    Une idée du pourquoi?

    Merci.


    [EDIT]J'ai testé en supprimant le code cité précédemment et celà ne modifie le théme que lorsque mon programme est exécuté depuis Main()...

    J'avoue être perdu...

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Il me semble qu'en fait c'est tout bête. Si tu attribue un LAF après avoir créer des objets graphiques, tu es obligé de mettre à jour ces objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwingUtilities.updateComponentTreeUI(...);
    Peut-être que tu ne met pas à jour tous les objets graphique ?

    Si tu attribue le LAF avant, alors ceci est inutile, c'est une voie meilleur sans doute. Seule la ligne d'attribution du LAF suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.setLookAndFeel("...");

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Bon bah aprés avoir fait un peu de ménage dans mon code, tout est redevenu normal (du moins au niveau de l'affichage du théme).
    PAr contre il me reste un dernier point qui est assez saoulant : lorsque je l'éexecute, la fenêtre qui apparait est vide, et c'est une fois aprés l'avoir resizé à la souris que les éléments apparaissent...
    Bizarre non?

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Oui, bizarre...

    Difficile de répondre avec si peu d'information !

    Cela peut venir d'une mauvaise gestion de ton/tes layout, ou bien d'une mauvaise redéfinition de la méthode paintComponent, ou bien encore d'autres choses.

    Donne nous plus d'infos.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    C'est bon c'est résolu. Je n'avais pas trop donné d'info étant donné que je ne m'y était pas attardé plus que ça.
    Le probléme venait du fait que j'avais ajouté mes composants à la Frame et non au Panel Principal.
    D'ailleurs, petites question pour ma culture perso, à quoi cela sert de déclarer un panel principal si on peut ajouter les composants directement à la Frame?

    [Edit]Oups, j'ai parlé trop vite, mes composants ont redisparu...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Et avec le code c'est mieux

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    public Fenetre(){
    		//Théme de la fenetre (ici Windows XP)
    		String lnfName = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
    		try {
    			UIManager.setLookAndFeel(lnfName);
    			SwingUtilities.updateComponentTreeUI(this);
    		} 
    		catch (ClassNotFoundException e) {e.printStackTrace();} 
    		catch (InstantiationException e) {e.printStackTrace();} 
    		catch (IllegalAccessException e) {e.printStackTrace();}
    		catch (UnsupportedLookAndFeelException e) {e.printStackTrace();}
     
    		//Attributs de la fenêtre
    		this.setTitle("Automatisation déploiement mise à jour");
    		this.setIconImage(Toolkit.getDefaultToolkit().getImage("ressources/picto16.gif")); //Modification de l'icone de l'application
    		this.setSize(500,580);
    		this.setVisible(true);
    		this.setResizable(true);
    		this.setLocationRelativeTo(null); //Postionnement au centre
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Fermeture lorsque l'on clique sur la croix
    		this.setContentPane(getJContentPane()); //déclaration du contentPane
     
    		//Attribut du content pane
    		jContentPane.setBackground(Color.decode("#A3CCED")); //Modification de l'écran de fond
     
    		//Log de la console
    		try {
    			System.setOut(new PrintStream(
    					new MultiOutputStream(System.out, new FileOutputStream("log.txt"))
    					, true));
    		} catch (FileNotFoundException e) {
    			System.out.println("Fichier log.txt inexistant");
    		} 
     
    		//**************AJOUTS DES COMPOSANTS**********************************************
    			choixServeur = new GroupeChoixServeur();
    			version = new GroupeVersion();
    			selectionMaj = new GroupeSelectionFichierMaj();
    			majLocal = new GroupeMajLocal();
    			majSql = new GroupeMajSql();
    			validation = new GroupeBoutonValidation();
    		//*********************************************************************************
     
     
    		//*******MISE EN FORME*************************************************
    			this.setLayout(new GridBagLayout());
     
     
    			GridBagConstraints gbc = new GridBagConstraints();
    			gbc.anchor = GridBagConstraints.BASELINE_LEADING;
    			gbc.insets = new Insets(0, 0, 3, 0);
     
    			//Ajout de la sélection du serveur
    			gbc.gridx = gbc.gridy = 0;
    			jContentPane.add(choixServeur.getJPanel(), gbc);
     
    	        //Ajout de la mise à jour 
    			gbc.gridx = 1;
    			gbc.gridy = 0;
    			gbc.gridwidth = GridBagConstraints.REMAINDER;
    			jContentPane.add(version.getJPanel(), gbc);
     
    	        //Ajout de la mise à jour workspace
    			gbc.gridx = 0;
    			gbc.gridy = 1;
    			gbc.gridwidth = GridBagConstraints.REMAINDER;
    			jContentPane.add(selectionMaj.getJPanel(), gbc);
     
    	        //Ajout de la mise à du local
    			gbc.gridx = 0;
    			gbc.gridy = 2;
    			gbc.gridwidth = GridBagConstraints.REMAINDER;
    			jContentPane.add(majLocal.getJPanel(), gbc);
     
     
    	        //Ajout de la mise à jour SQL
    			gbc.gridx = 0;
    			gbc.gridy = 4;
    			gbc.gridwidth = GridBagConstraints.REMAINDER;
    			jContentPane.add(majSql.getJPanel(), gbc);
     
    	        //Ajout du séparateur
    	        //gbc.gridx = 4;
    	        gbc.gridy = 5;
    	        //gbc.anchor = GridBagConstraints.CENTER;
    	        gbc.fill = GridBagConstraints.HORIZONTAL;
    	        //gbc.insets = new Insets(3, 5, 0, 5);
    	        gbc.gridwidth = GridBagConstraints.REMAINDER;
    	        jContentPane.add(separator, gbc);
     
    	        //Ajout des boutons valider et annuler
    			gbc.gridx = 0;
    			gbc.gridy = 6;
    			gbc.gridwidth = GridBagConstraints.REMAINDER;
    			jContentPane.add(validation.getJPanel(), gbc);
    	    //*********************************************************************

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/04/2007, 11h20
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 15h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 12h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 22h11

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