Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] creare un bordo multicolore

    Salve, ho bisogno di inserire in una cella di una JTable un bordo multicolore. MatteBorder è buono come stile però non mi da la possibilità di scegliere il colore sui 4 lati. Consigli?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] creare un bordo multicolore

    Originariamente inviato da redcloud
    Salve, ho bisogno di inserire in una cella di una JTable un bordo multicolore. MatteBorder è buono come stile però non mi da la possibilità di scegliere il colore sui 4 lati. Consigli?
    Se non ti vanno bene i bordi che puoi creare con la classe BorderFactory, puoi sempre fartene uno tuo personale. Tieni infatti presente che "Border" è una interfaccia.

    Se vuoi un bordo in cui personalizzare il colore di ognuno dei 4 bordi, puoi usare questa semplice classe che ho appena scritto:
    codice:
    import java.awt.*;
    import javax.swing.border.Border;
    
    public class FourBorders implements Border
    {
        private Color topColor;
        private Color bottomColor;
        private Color leftColor;
        private Color rightColor;
    
        public FourBorders (Color topColor, Color bottomColor, Color leftColor, Color rightColor)
        {
            this.topColor = topColor;
            this.bottomColor = bottomColor;
            this.leftColor = leftColor;
            this.rightColor = rightColor;
        }
        
        public Insets getBorderInsets (Component c)
        {
            return new Insets (1, 1, 1, 1);
        }
        
        public boolean isBorderOpaque ()
        {
            return true;
        }
    
        public void paintBorder (Component c, Graphics g, int x, int y, int width, int height)
        {
            Color oldColor = g.getColor ();
            g.translate (x, y);
    
            g.setColor (topColor);
            g.drawLine (0, 0, width-1, 0);
    
            g.setColor (bottomColor);
            g.drawLine (0, height-1, width-1, height-1);
    
            g.setColor (leftColor);
            g.drawLine (0, 0, 0, height-1);
    
            g.setColor (rightColor);
            g.drawLine (width-1, 0, width-1, height-1);
    
            g.translate (-x, -y);
            g.setColor (oldColor);
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie andbin, è la stessa soluzione che ho usato io. Ma translate a che serve?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da redcloud
    Grazie andbin, è la stessa soluzione che ho usato io.


    Originariamente inviato da redcloud
    Ma translate a che serve?
    A traslare le coordinate!! Avrei anche potuto fare:

    g.drawLine (x, y, x+width-1, y);
    ecc...

    ma traslando le coordinate, viene più comodo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.