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 :

Créer une fenêtre JDialog avec les coins arrondis


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Mai 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2015
    Messages : 34
    Points : 33
    Points
    33
    Par défaut Créer une fenêtre JDialog avec les coins arrondis
    Bonjour à tous,
    après plusieurs recherches, je n'ai toujours pas trouvé comment faire pour créer une fenêtre JDialog avec les coins arrondis. Est-ce que quelqu'un pourrait m'aider svp? Mon objectif est de créer une JDialod de la forme d'un smartphone.

    Voici le code tout simple du départ:

    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
    public class CoinsArrondis extends JDialog {
     
    	public CoinsArrondis() {
    		setSize(300,300);
     
    	}
     
    	public static void main(String[] args) {
     
    		CoinsArrondis c = new CoinsArrondis();
    		c.setVisible(true);
     
    	}
     
    }

  2. #2
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour faire des coins arrondis à une fenêtre en Java Swing, on peut lui changer sa forme (en rectangle avec coin arrondis), mais on ne peut faire ça que sur des fenêtres non décorées, ce qui t'obligera à redéfinir toi-même bordure, titre, boutons, etc...

    Un exemple rapide :

    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
    public class JRoundedDialog extends JDialog {
     
        private static final int TITLE_HEIGHT = 24;
    	private double ray;
     
    	public JRoundedDialog() {
    	      setUndecorated(true);
    	      addComponentListener(new ComponentAdapter() { // pour que la forme s'adapte à la taille automatiquement
     
    		@Override
                    public void componentResized(ComponentEvent e) {
                	   ray=getRay(getWidth(),getHeight());
                       setShape(new RoundRectangle2D.Double(0,0,getWidth(),getHeight(), ray, ray)); // on affecte la taille
            	   getContentPane().setBounds(0, TITLE_HEIGHT, getWidth(), getHeight()-TITLE_HEIGHT);
                    }
                 });
    	     getRootPane().setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); // on ajoute un border vide pour laisser de la place pour son dessin (ligne fine de 1px)
    	}
     
     
    	@Override
    	public void paint(Graphics g) {
    		super.paint(g);
     
                    // exemple pour dessiner le titre
    		g.setColor((Color)UIManager.get("activeCaption"));
    		g.fillRect(0, 0, getWidth(), TITLE_HEIGHT);
    		Rectangle2D titleBounds = g.getFontMetrics().getStringBounds(getTitle(), g);
    		double xt = (getWidth()-titleBounds.getWidth())/2.0;
    		double yt = (TITLE_HEIGHT-titleBounds.getHeight())/2.0+g.getFontMetrics().getAscent();
    		g.setColor((Color)UIManager.get("activeCaptionText"));
    		g.drawString(getTitle(), (int)xt, (int)yt);
     
                    // dessin d'une bordure (ligne fine de 1 px)
    		g.setColor((Color)UIManager.get("windowBorder"));
    		g.drawRoundRect(0, 0, getWidth()-1, getHeight()-1, (int)ray, (int)ray);
    	}
     
    	protected double getRay(int width, int height) {
    		return Math.min(width, height)/10;
    	}
     
     
    	public static void main(String[] args) {
     
    		JRoundedDialog dialog =  new JRoundedDialog();
    		dialog.setTitle("Titre");
    		dialog.setSize(300, 200);
    		dialog.setLocationRelativeTo(null);
    		dialog.getContentPane().add(createDialogContent());
    		dialog.setVisible(true);
    	}
     
     
    	private static Component createDialogContent() {
    		JPanel panel = new JPanel(new BorderLayout());
    		panel.setBackground(Color.CYAN);
    		panel.add(new JLabel("TEXTE", JLabel.CENTER));
    		return 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.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Mai 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2015
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Salut, merci pour ta réponse !

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

Discussions similaires

  1. [Article] Créer une fenêtre modale avec CSS 3
    Par Bovino dans le forum Publications (X)HTML et CSS
    Réponses: 7
    Dernier message: 24/02/2018, 16h25
  2. [CSS 3] Créer une fenêtre modale avec CSS 3
    Par Bovino dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 07/12/2012, 10h21
  3. XAML : un rectangles avec les coins arrondies en haut.
    Par Archeone dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 09/11/2008, 22h11
  4. Réponses: 1
    Dernier message: 21/05/2007, 10h33

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