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 :

JPanel déplaçable et extensible


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut JPanel déplaçable et extensible
    Bonsoir,

    j'essaie de réalise r un composant que je puisse déplacer dans un jpanel. je voudrai qu'il ait des poignés pour pouvoir l'agrandir ou le réduire à volonté.

    je suis parti d'un jpanel.

    Le problème de mon code est que je perds le Jpanel si je déplace trop vite la souris (c'est identique pour la réduction de la taille du jpanel).


    mon code :
    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
     
     
     
    public class Test {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
     
     
    		final JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		JPanel panel = new JPanel();
    		frame.getContentPane().add(panel);
    		frame.setSize(300, 300);
     
     
    		 panelDe = new Panel();
     
    		panel.add(panelDe);
    		panelDe.setBackground(Color.RED);
     
    		panelDe.setName("rodolphe");
     
     
    	panelDe.addMouseMotionListener(new MouseMotionListener() {
     
    		@Override
    		public void mouseMoved(MouseEvent e) {
    			xDep = e.getX();
    			yDep = e.getY();
     
    		}
     
    		@Override
    		public void mouseDragged(MouseEvent e) {
    			x = panelDe.getX();
    			 y = panelDe.getY();
    			 lg = panelDe.getWidth()-3;
    			 lr = panelDe.getHeight()-3;
     
     
    			 if (e.getX()> 3 && e.getX()<lg){
    				 if (e.getY()>3 && e.getY()<lr){
    					 panelDe.setLocation(e.getX()+x-panelDe.getWidth()/2, e.getY()+y-panelDe.getHeight()/2);
    					 frame.repaint();
    				 }
    			 }
     
    			 if (e.getX()> lg){
    				 if (e.getX()>xDep){
    				 panelDe.setSize(panelDe.getWidth()+1, panelDe.getHeight());
    				 }
    				 if (e.getX()<xDep){
    					 panelDe.setSize(panelDe.getWidth()-1, panelDe.getHeight());
     
    					 }
    			 }
    		}
    	});
    		frame.setVisible(true);
     
     
    	}
    	static Panel panelDe;
    	private static int xDep ;
    	private static int yDep ;
    	static int x ;
    	static int y ;
    	static int lg ;
    	static int lr ;
     
    }

    et mon JPanel

    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
     
     
    @SuppressWarnings("serial")
    public class Panel extends JPanel{
     
    	public Panel() {
    		setBackground(Color.RED);
    		setPreferredSize(new Dimension(50, 20));
    	}
     
     
     
     
    	public void paintComponent(Graphics g) {
    		super.paintComponent(g);
     
     
    		int width = getWidth();
    	    int height = getHeight();
     
    	    g.setColor(ColorBackGround);
    	    g.fillRect(0, 0, width+x, height);
     
    	    g.setColor(Color.BLACK);
    		g.drawLine(0, 10, 0, 20);
    		g.drawLine(1, 10, 1, 20);
    		g.drawLine(2, 10, 2, 20);
    	  }
     
     
     
    	public void setBackground(Color color){
     
    		ColorBackGround = color;
     
    	}
     
     
     
     
    	private Color ColorBackGround ;
    	private int x ;
     
     
    }
    merci de votre aide.

  2. #2
    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
    Ca doit aitre aisément faisable en utilisant un framework de docking comme MyDoggy

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut Ca marche
    Merci Sinok,

    j'ai téléchargé le FrameWork et ça me convient bien.

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

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 14h20
  2. [TP]rendre une unité avec l'extension tpu
    Par mmm dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 28/10/2003, 21h09
  3. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 16h28
  4. JPanel et Border
    Par titoine dans le forum Débuter
    Réponses: 3
    Dernier message: 22/04/2003, 16h58
  5. Algo de tri, extension
    Par Mouse dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/02/2003, 01h14

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