Ciao,
io ho fatto il seguente codice di prova di un BoxLayout
Però il tutto mi viene portato a ridosso del bordo del JFrame.codice:package boxlayoutexample; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; /** * * @author utente */ public class BoxLayoutExample extends JFrame { public BoxLayoutExample() { super("Esempio di BoxLayout"); Color colore = new Color(200, 210, 222); Container contentPane = this.getContentPane(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setPreferredSize(new Dimension(400, 300)); contentPane.setBackground(colore); // Panel JPanel pannelloPrimaRiga = new JPanel(); pannelloPrimaRiga.setLayout(new BoxLayout(pannelloPrimaRiga, BoxLayout.LINE_AXIS)); pannelloPrimaRiga.setAlignmentX(Component.LEFT_ALIGNMENT); JLabel label11 = new JLabel("Prima riga prima etichetta"); JLabel label12 = new JLabel("Prima riga seconda etichetta"); label11.setAlignmentX(Component.LEFT_ALIGNMENT); label12.setAlignmentX(Component.LEFT_ALIGNMENT); pannelloPrimaRiga.add(label11); pannelloPrimaRiga.add(Box.createRigidArea(new Dimension(15, 0))); pannelloPrimaRiga.add(label12); JPanel pannelloSecondaRiga = new JPanel(); pannelloSecondaRiga.setAlignmentX(Component.LEFT_ALIGNMENT); pannelloSecondaRiga.setLayout(new BoxLayout(pannelloSecondaRiga, BoxLayout.LINE_AXIS)); JLabel label21 = new JLabel("Seconda riga prima etichetta"); JLabel label22 = new JLabel("Seconda riga seconda etichetta"); pannelloSecondaRiga.add(label21); pannelloSecondaRiga.add(Box.createRigidArea(new Dimension(15, 0))); pannelloSecondaRiga.add(label22); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.add(pannelloPrimaRiga); panel.add(Box.createRigidArea(new Dimension(0, 10))); panel.add(pannelloSecondaRiga); JPanel p = new JPanel(new BorderLayout()); p.add(panel, BorderLayout.CENTER); JScrollPane scrollPane = new JScrollPane(p); contentPane.add(scrollPane, BorderLayout.CENTER); this.pack(); this.setLocationRelativeTo(null); } /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here SwingUtilities.invokeLater(new Runnable() { public void run() { BoxLayoutExample frame = new BoxLayoutExample(); frame.setVisible(true); } }); } }
C'è un modo per dare al content pane una specie di margine?
Grazie.
EDIT: ho risolto estendendo AbstractBorder e facendogli ritornare l'Insets voluto.
Ma c'è un metodo più diretto?

al volante son nervoso
Rispondi quotando
