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 :

Réduire (voire supprimer) le cadre d'une fenêtre ?


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
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Par défaut Réduire (voire supprimer) le cadre d'une fenêtre ?
    Hey,

    J'aimerais réduire au maximum (voire supprimer) la barre avec minimize/maximize/close

    Illustration :


    J'espère ne pas devoir me lancer vers d'autres librairies ou quoi, j'espère juste que Swing permet malgré tout de virer cette barre en haut :p
    (vous l'aurez compris, je souhaite que la fenêtre soit la plus petite possible)

    Merci!

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JFrame.setUndecorated(true)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JFrame.setUndecorated(true)
    Exactement ça, merci

    Cela dit je cherche maintenant à déplacer cette fenêtre
    J'ai fouillé un peu pour trouver ça :
    http://www.codeproject.com/Tips/2824...-frame-in-Java
    Mais j'ai beau coller et manipuler ces fonctions, je n'arrive à rien (je suis sur NetBeans, et j'ai du rouge partout. (invalid method declaration, etc)

    (Ajoutez à ca mes lacunes en progra objet, j'ai juste quelques bases, mais pour ce qui est des librairies graphiques, Netbeans fait 90% du code)

    Thx

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    en fait il faut intégrer les bouts de code donnés de cette manière, par exemple :

    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
    import java.awt.GraphicsConfiguration;
    import java.awt.HeadlessException;
    /*import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;*/
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.JFrame;
     
    /**
     *
     */
    public class BorderlessFrame extends JFrame {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	private int posX=0;
    	private int posY=0;
     
    	/**
             * @throws HeadlessException
             */
    	public BorderlessFrame() throws HeadlessException {
    		initBorderless();
    	}
     
    	/**
             * @param gc
             */
    	public BorderlessFrame(GraphicsConfiguration gc) {
    		super(gc);
    		initBorderless();
    	}
     
    	/**
             * @param title
             * @throws HeadlessException
             */
    	public BorderlessFrame(String title) throws HeadlessException {
    		super(title);
    		initBorderless();
    	}
     
    	/**
             * @param title
             * @param gc
             */
    	public BorderlessFrame(String title, GraphicsConfiguration gc) {
    		super(title, gc);
    		initBorderless();
    	}
     
    	private void initBorderless() {
    		this.setUndecorated(true);
    		this.addMouseListener(new MouseAdapter()
    		{
     
    		public void mousePressed(MouseEvent e)
    		   {
    		      posX=e.getX();
    		      posY=e.getY();
    		   }
    		});
    		this.addMouseMotionListener(new MouseAdapter()
    		{
    		     public void mouseDragged(MouseEvent evt)
    		     {
    				//sets frame position when mouse dragged			
    				setLocation (evt.getXOnScreen()-posX,evt.getYOnScreen()-posY);
     
    		     }
    		});
    		/* A décommenter (y compris les imports) pour que la fenêtre puisse être fermée avec esc
    		addKeyListener(new KeyAdapter() {
     
    			@Override
    			public void keyPressed(KeyEvent e) {
    				if ( e.getKeyCode()==KeyEvent.VK_ESCAPE ) BorderlessFrame.this.dispose();
    			}
     
    		});*/
    	}
     
    }
    Mais attention, de cette manière, c'est le fond de la fenêtre qui sera déplaçable : tous composants intéractifs contenus dans la fenêtre capterons les évenements souris avant la fenêtre, donc on ne pourra pas déplacer la fenêtre lorsqu'on cliquera sur ces composants.

    Pour résoudre ce problème, tu peux procéder en mettant un composant en haut de la fenêtre :

    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
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    /**
     *
     */
    public class DragFrameTitle extends JPanel {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private static final Dimension DIMENSION = new Dimension(-1,5);//5 est la hauteur du titre
    	private int posX=0;
    	private int posY=0;
    	private JFrame frame;
     
    	/**
             * 
             */
    	public DragFrameTitle(JFrame aFrame, Color color) {
    		this.frame=aFrame;
    		setBackground(color);
    		this.addMouseListener(new MouseAdapter()
    		{
     
    		public void mousePressed(MouseEvent e)
    		   {
    		      posX=e.getX();
    		      posY=e.getY();
    		   }
    		});
    		this.addMouseMotionListener(new MouseAdapter()
    		{
    		     public void mouseDragged(MouseEvent evt)
    		     {
    				//sets frame position when mouse dragged			
    				frame.setLocation (evt.getXOnScreen()-posX,evt.getYOnScreen()-posY);
     
    		     }
    		});
        }
     
    	@Override
    	public Dimension getMaximumSize() {
    		return DIMENSION;
    	}
    	@Override
    	public Dimension getMinimumSize() {
    		return DIMENSION;
    	}
    	@Override
    	public Dimension getPreferredSize() {
    		return DIMENSION;
    	}
     
    }
    Et pour l'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JFrame frame = new JFrame();
            frame.setUndecorated(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.getContentPane().setLayout(new BorderLayout());
            frame.getContentPane().add(new DragFrameTitle(frame,Color.BLUE),BorderLayout.NORTH);
            JPanel panel = new JPanel();
            frame.getContentPane().add(panel,BorderLayout.CENTER);
    
            ... puis affecter le layout à panel puis ajouter les composants de la fenêtre à panel
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Ou comment retirer le bord de la fenêtre pour ensuite refaire à la main tout ce que l'OS faisait bien. Ensuite je suis sur qu'on ajoutera un bouton fermer, qu'on demandera à la rendre redimensionnable et qu'on devra pouvoir lui donner un titre

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Sinon à partir de Java 7 on peut utiliser setType(Type.UTILITY), qui donnera à la barre de titre l'aspect utilisé par les barres d'outils (avec une barre de titre nettement plus fine).


    a++

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/12/2007, 22h29
  2. Supprimer le contour d'une fenêtre
    Par Jeremy0201 dans le forum Tkinter
    Réponses: 2
    Dernier message: 15/07/2007, 11h27
  3. Réponses: 1
    Dernier message: 15/09/2005, 23h47
  4. Comment réduire explicitement une fenêtre ?
    Par ToYonos dans le forum MFC
    Réponses: 1
    Dernier message: 13/09/2005, 17h28
  5. Supprimer la croix dans une fenêtre modale
    Par AnneOlga dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/01/2004, 15h52

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