Ciao,
io ho fatto il seguente codice di prova di un BoxLayout
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);
}
});
}
}
Però il tutto mi viene portato a ridosso del bordo del JFrame.
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?