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 :

redimensionnement d'une JWindow [FAQ]


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 17
    Points
    17
    Par défaut redimensionnement d'une JWindow
    salut !

    j'ai cree une application qui affiche une JWindow (car je voulais pas de la barre de titre classique). Bref tout marche bien, sauf le redimensionnement...

    J'ai defini un label avec une image en bas a droite du JWindow (l'image avec trois petits traits en bas a droite comme sous MS Windows...ouvrez IE et regardez si vous voyez pas de quoi je veux parler)
    Bref j'ai defini les MouseMotionListeners de ce label et dedans je fais ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      void jLabel2_mouseDragged(MouseEvent e)
      {
        contentPane.setPreferredSize(new Dimension(size.width+e.getX(),size.height+e.getY()));
        pack();
      }
      void jLabel2_mousePressed(MouseEvent e)
      {
        size=contentPane.getSize();
      }
    (size est du type "Dimension")

    Ca redimensionne, mais avec 2 problemes :

    La nouvelle taille de la fenetre n'est pas exactement celle que je veux : plus je m'ecarte de la position d'origine (la ou je clique) plus le coin en bas a droite dela fenetre est loin de la ou il devrait etre (la ou je relache le bouton de la souris)

    Deuxieme probleme...c'est lent ! du coup la fenetre clignote sans arret pendant le redimensionnement.

    Si quelqu'un peut m'aider ca serait cool car j'ai essaye pleins de trucs (setSize, setBounds, repaint, repaintimmediately) mais y'a que getPreferedSize+pack qui marche...


    Christophe

  2. #2
    Membre régulier Avatar de jiraiya
    Inscrit en
    Mai 2002
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    je ne pense pas que les JWindows soit les trucs les plus approprié pour le redimmensionnement, mais tu peux essayé avec les JFrame, en faisant un setUndecorated(), ça peut peut être mieux marché pais j'ai pas essayé

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    ok j'ai fais la modification pour le calcul de la taille, ca marche nickel maintenant.
    J'ai aussi gere de changer le curseur de la souris pour afficher la fleche de redimensionnement.

    Voici le code, j'espere que ca pourra servir a quelqu'un :

    Creation du label:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      private JLabel jLabel2 = new JLabel();
    Configuration du label:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        jLabel2.setIcon(new ImageIcon(MainFrame.class.getResource("resize.gif")));
        java.awt.Cursor ResizeCursor=new java.awt.Cursor(java.awt.Cursor.SE_RESIZE_CURSOR);
        jLabel2.setCursor(ResizeCursor);
        jLabel2.addMouseMotionListener(new java.awt.event.MouseMotionAdapter()
        {
          public void mouseDragged(MouseEvent e)
          {
            jLabel2_mouseDragged(e);
          }
        });
        jPanel1.add(jLabel2, BorderLayout.EAST);
    Definition de la fonction de redimenssionement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      void jLabel2_mouseDragged(MouseEvent e)
      {
        Point p=e.getPoint();
        javax.swing.SwingUtilities.convertPointToScreen(p,jLabel2);
        contentPane.setPreferredSize(new Dimension(p.x-getBounds().x,p.y-getBounds().y));
        pack();
      }
    Bon il faut aussi penser a gerer les mousemotionlisteners en definissant la classe comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class MainFrame extends JWindow implements MouseMotionListener
    Voila voila, l'affichage clignote un peu quand on redimmensionne, mais rien de mechant.

    Merci encore pour votre aide sebastien et ifrit.

    Christophe

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

Discussions similaires

  1. redimensionnement d'une fiche et de ses controles
    Par spoony dans le forum C++Builder
    Réponses: 5
    Dernier message: 04/04/2004, 12h15
  2. interdire le redimensionnement d'une fenêtre
    Par marsupile dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/02/2004, 20h48
  3. Type de redimensionnement d'une form
    Par Sub0 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 05/12/2003, 21h56
  4. Redimensionnement d'une fenêtre Directx
    Par Francky033 dans le forum DirectX
    Réponses: 2
    Dernier message: 28/09/2003, 17h53
  5. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01

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