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 :

[JFrame]Redimensionnement et effets d'affichage


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Par défaut [JFrame]Redimensionnement et effets d'affichage
    Je souhaite redimensionner une fenetre grace à un slider.
    Le principe est assez simple : le slider va de 100 à 1000 et la taille de la fenetre s'adapte à la valeur du slider à chaque modification de la valeur du slider.
    Pour redimensionner la fenetre, j'appelle directement la méthode setSize().
    Mon probleme est que j'ai de très gros effets de repaint (clignotement) dès que je change la taille de la fenetre de cette manière. Or je n'ai absolument pas ce probleme si ma fenetre est redimensionné à la souris de manière "classique".
    Y a-t-il une une méthode plus efficace que setSize pour redimensionner la fenetre ? quelque chose à faire en plus (ou en moins) ?

    Code de ma fenetre :

    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
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JSlider;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
     
     
    public class Test extends JFrame 
    {
        JSlider slider ;
     
        public Test()
        {
            getContentPane().setLayout(null);
            JButton bouton = new JButton("OK");
            getContentPane().add(bouton);
            bouton.setSize(100,25);
            bouton.setLocation(10,10);
            slider = new JSlider();
            slider.setMaximum(1000);
            slider.setValue(500);
            slider.setMinimum(100);
            slider.addChangeListener(new ChangeListener()
            {
     
                public void stateChanged(ChangeEvent e)
                {
                    setSize(slider.getValue(), slider.getValue());
                }
            });
            slider.setSize(200,20);
            slider.setLocation(30,80);
            getContentPane().add(slider);
            setSize(500,500);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
        }
     
        public static void main(String[] args)
        {
            new Test();
        }
     
    }
    merci d'avance.

  2. #2
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut DoubleBuffer
    Salut, je pense que dans un premier temps tu peux déclarer ta fenetre avec un double buffer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maFenetre.setDoubleBuffered(true);
    je ne sais pas ce que ca va donner dans ton cas mais dans le mien, ca a servi!
    Bon courage et a plus!

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Par défaut
    Il n'y a pas de méthode setDoubleBuffered sur les JFrame et de plus en Swing les composants sont doublebufferisés par defaut.
    Donc le pb ne vient pas de la mais merci quand même.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Diminuer le nombre d'incrémentation réalisées par ton slider (car un setSize pixel par pixel, effectivement ça fait mal à la perf)....

    genre utilisation de la méthode snapToTicks et d'un minorTickSpacing adapté...

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Par défaut
    ce n'est pas ca non plus, en le faisant 10 fois moins souvent (modulo 10 sur la valeur du slider) j'ai le même probleme.
    Ce que je voudrais surtout savoir c'est pkoi lorsque je redimensionne ma fenetre avec la souris je n'ai absolument aucun effets d'affichage !!

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void stateChanged(ChangeEvent e) {
        if (!e.isAdjusting()) {
            setSize(slider.getValue(), slider.getValue());
        }
    }
    Sinon essaye Java 1.6

Discussions similaires

  1. [JFrame] Redimensionnement Fenêtre (GridBag)Layout
    Par lac981 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 08/08/2013, 09h52
  2. Redimensionnement d'images à l'affichage
    Par okoweb dans le forum Langage
    Réponses: 14
    Dernier message: 20/10/2010, 18h52
  3. [Swing][JButton] Effet d'affichage
    Par Caster dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 21/08/2007, 13h56
  4. [Débutant] Appliquer un effet à l'affichage
    Par YéTeeh dans le forum OpenGL
    Réponses: 3
    Dernier message: 13/05/2006, 16h52
  5. [JFrame] Redimensionnement et Drag Mode
    Par Quentin dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 01/12/2004, 23h12

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