Bordure arrondie dans un JPanel

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

2 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
11 déc. 2006 à 16:04
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
3
3615jenveux Messages postés 41 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 11 août 2008
11 déc. 2006 à 20:12
C'est tout  a fait ça, merci beaucoup :)
0
Rejoignez-nous