Bordure arrondie dans un JPanel [Résolu]

3615jenveux 41 Messages postés vendredi 6 février 2004Date d'inscription 11 août 2008 Dernière intervention - 11 déc. 2006 à 15:01 - Dernière réponse : 3615jenveux 41 Messages postés vendredi 6 février 2004Date d'inscription 11 août 2008 Dernière intervention
- 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 

2 réponses

Répondre au sujet
Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 11 déc. 2006 à 16:04
+2
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Twinuts
3615jenveux 41 Messages postés vendredi 6 février 2004Date d'inscription 11 août 2008 Dernière intervention - 11 déc. 2006 à 20:12
0
Utile
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.