Bordure arrondie dans un JPanel [Résolu]

Messages postés
41
Date d'inscription
vendredi 6 février 2004
Dernière intervention
11 août 2008
- - Dernière réponse : 3615jenveux
Messages postés
41
Date d'inscription
vendredi 6 février 2004
Dernière intervention
11 août 2008
- 11 déc. 2006 à 20:12
Bonjour,

Existe-t-il une méthode prévu dans les API de SUN pour créer une bordure aux coins arrondis dans un JPanel ?

Je ne sais faire qu'une bordure avec une cadre a angle droit :

        Border line = BorderFactory.createLineBorder(Color.BLACK, 1);
        TitledBorder panelBorder = BorderFactory.createTitledBorder(line, " Mon titre ");
        panel.setBorder(panelBorder);
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
5309
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
18 décembre 2018
2
Merci
Salut,

je ne pense pas que de base il en existe mais tu peux te faire TA bordure exemple:

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.RenderingHints;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;

public class MyBoder implements Border{

    public Insets getBorderInsets(Component c) {
        return new Insets(0, 0, 0, 0);//ou autre chose cela dépend de si tu veux rendre parametrable
    }

    public boolean isBorderOpaque() {
        return false;//ou autre chose cela dépend de si tu veux rendre parametrable
    }

    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
        g.setColor(Color.BLUE);//ou une autre couleur que tu peux rendre paramétrable
        int arc = 25;//tu peux aussi le rendre configurable
        int adjustXY = 1;//pour ajuster le dessin en x et y
        int adjustWH = 2;//idem pour width et height
        //pour eviter les escalier sur l'arrondi
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2.drawRoundRect(x+adjustXY, y+adjustXY, width-adjustWH, height-adjustWH, arc, arc);
    }
   
   
    //pour le test
    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setSize(300, 300);
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(3);
        f.setLayout(new FlowLayout());
       
        //on fait un panel pour le test
        JPanel p = new JPanel();
        p.add(new JButton("Composant de test"));
        p.setPreferredSize(new Dimension(200, 100));
        p.setBorder(new MyBoder());
       
        f.add(p);
        f.setVisible(true);
    }

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Twinuts
Messages postés
41
Date d'inscription
vendredi 6 février 2004
Dernière intervention
11 août 2008
0
Merci
C'est tout  a fait ça, merci beaucoup :)
Commenter la réponse de 3615jenveux

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.