Visualizzazione dei risultati da 1 a 6 su 6

Discussione: (java) Creare bordi

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) Creare bordi

    Volevo creare un pannello con all'interno una lista di bottoni.
    La lista di bottoni ha un titolo però quando vado ad eseguire il programma, il titolo risulta sovrapposto alla linea del bordo
    Qualcuno sa dirmi dov'è l'errore?

    codice:
    package it.panel;
    
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.GridLayout;
    
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.Border;
    import javax.swing.border.CompoundBorder;
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.TitledBorder;
    
    /**
     * @author f4068
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class ProvaBordo extends JPanel {
    
        /**
         * 
         */
        public ProvaBordo() {
            //super("prova bordo");
            super();
            Border marginOutside = new EmptyBorder(10,10,10,10);        
            TitledBorder title = BorderFactory.createTitledBorder("bla bla bla bla bla");
            CompoundBorder upperBorder = new CompoundBorder(marginOutside, title);
            Border marginInside = new EmptyBorder(10,10,10,10);
            this.setBorder(new CompoundBorder(upperBorder, marginInside));
            this.setLayout(new GridLayout(0,1));
            this.add(new JLabel("uno"));
            this.add(new JLabel("uno"));
            this.add(new JLabel("uno"));
            this.add(new JLabel("uno"));
           
        }
    
        public static void main(String[] args) {
            JPanel p = new ProvaBordo();
            JFrame frame = new JFrame("ciao");
            Container c = frame.getContentPane();        
            c.setLayout(new BorderLayout());
            c.add("North", p);
            frame.setSize(500, 600);
            frame.setVisible(true);
            
            
        }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    prova ad usare un altro costruttore per i border


    codice:
    public static TitledBorder createTitledBorder(Border border,
                                                  String title,
                                                  int titleJustification,
                                                  int titlePosition)
    se trovi difficolta basta che consulti la documentazione..

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    non è un problema di costruttore, penso sia un problema di come "inscatolo" i vari bordi ma non capisco dov'è l'errore

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    hai provato con l'editor grafico???

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    ma scusa che senso c'è ad avere una lista all'interno di un bottongroup??
    crea i bottoni e poi racchiudili direttamente nel bottongroup. Se metti un'etichetta al group questa per forza viene a sovrapporsi al suo stesso bordo

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    non ho capito la tua osservazione, non vedo nessun button group, cmq ho capito il problema, non si può inscatolare un CompoundBorder all'interno di un CompoundBorder quindi una possibilie soluzione è inscatolare un jpanel con bordo in un altro jpanel con bordo, ecco il codice funzionante:

    codice:
    package it.panel;
    
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.GridLayout;
    
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.Border;
    import javax.swing.border.CompoundBorder;
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.TitledBorder;
    
    public class ProvaBordo {
        static JPanel  outsidePanel;
        /**
         * 
         */
        public ProvaBordo() {
            JPanel insidePanel = new JPanel();                 
            TitledBorder title = BorderFactory.createTitledBorder("bla bla bla bla bla");
            Border marginInside = new EmptyBorder(10,10,10,10);        
            insidePanel.setBorder(new CompoundBorder(title, marginInside));
            insidePanel.setLayout(new GridLayout(0,1));
            insidePanel.add(new JLabel("uno"));
            insidePanel.add(new JLabel("uno"));
            insidePanel.add(new JLabel("uno"));
            insidePanel.add(new JLabel("uno"));
            
            outsidePanel = new JPanel();
            outsidePanel.setLayout(new BorderLayout());
            outsidePanel.setBorder(new EmptyBorder(10,10,10,10)); 
            outsidePanel.add(insidePanel);
           
        }
    
        public static void main(String[] args) {
            new ProvaBordo();
            JFrame frame = new JFrame("ciao");
            Container c = frame.getContentPane();        
            c.setLayout(new BorderLayout());
            c.add("North", outsidePanel);
            frame.setSize(500, 600);
            frame.setVisible(true);       
        }
    }

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 © 2024 vBulletin Solutions, Inc. All rights reserved.