Java/Swing JFC/BoxLayout

Материал из Java эксперт
Перейти к: навигация, поиск

Align your components in horizontal or vertical layout

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Main extends JFrame {

 public Main() {
   super("Demostrating BoxLayout");
   final int SIZE = 3;
   Container c = getContentPane();
   c.setLayout(new BorderLayout(30, 30));
   Box boxes[] = new Box[4];
   boxes[0] = Box.createHorizontalBox();
   boxes[1] = Box.createVerticalBox();
   boxes[2] = Box.createHorizontalBox();
   boxes[3] = Box.createVerticalBox();
   for (int i = 0; i < SIZE; i++)
     boxes[0].add(new JButton("boxes[0]: " + i));
   for (int i = 0; i < SIZE; i++) {
     boxes[1].add(Box.createVerticalStrut(25));
     boxes[1].add(new JButton("boxes[1]: " + i));
   }
   for (int i = 0; i < SIZE; i++) {
     boxes[2].add(Box.createHorizontalGlue());
     boxes[2].add(new JButton("boxes[2]: " + i));
   }
   for (int i = 0; i < SIZE; i++) {
     boxes[3].add(Box.createRigidArea(new Dimension(12, 8)));
     boxes[3].add(new JButton("boxes[3]: " + i));
   }
   JPanel panel = new JPanel();
   panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
   for (int i = 0; i < SIZE; i++) {
     panel.add(Box.createGlue());
     panel.add(new JButton("panel: " + i));
   }
   c.add(boxes[0], BorderLayout.NORTH);
   c.add(boxes[1], BorderLayout.EAST);
   c.add(boxes[2], BorderLayout.SOUTH);
   c.add(boxes[3], BorderLayout.WEST);
   c.add(panel, BorderLayout.CENTER);
   setSize(350, 300);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setVisible(true);
   
 }
 public static void main(String args[]) {
   Main app = new Main();
 }

}

 </source>
   
  
 
  



A vertical box container arranges the components top-to-bottom aligned in their preferred sizes.

   <source lang="java">
 

import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component1 = new JButton();
   JButton component2 = new JButton();
   // Create vertical box container
   Box box = new Box(BoxLayout.Y_AXIS);
   // create a vertical box container
   box = Box.createVerticalBox();
   // Add components
   box.add(component1);
   box.add(component2);
 }

}


 </source>
   
  
 
  



BoxLayout puts components into a row or into a column

   <source lang="java">

import java.awt.Dimension; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class TwoButtons {

   public static void main(String[] args) {
     JFrame f = new JFrame();
     JPanel basic = new JPanel();
     basic.setLayout(new BoxLayout(basic, BoxLayout.Y_AXIS));
     f.add(basic);
     basic.add(Box.createVerticalGlue());
     JPanel bottom = new JPanel();
     bottom.setAlignmentX(1f);
     bottom.setLayout(new BoxLayout(bottom, BoxLayout.X_AXIS));
     JButton ok = new JButton("OK");
     JButton close = new JButton("Close");
     bottom.add(ok);
     bottom.add(Box.createRigidArea(new Dimension(5, 0)));
     bottom.add(close);
     bottom.add(Box.createRigidArea(new Dimension(15, 0)));
     basic.add(bottom);
     basic.add(Box.createRigidArea(new Dimension(0, 15)));
     f.setSize(300, 250);
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     f.setVisible(true);
   }

}

 </source>
   
  
 
  



BoxLayout: set a rigid area among our components.

   <source lang="java">

import java.awt.Dimension; import java.awt.Insets; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class RigidArea {

 public static void main(String[] args) {
   JPanel panel = new JPanel();
   panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
   panel.setBorder(new EmptyBorder(new Insets(40, 60, 40, 60)));
   panel.add(new JButton("Button"));
   panel.add(Box.createRigidArea(new Dimension(0, 5)));
   panel.add(new JButton("Button"));
   panel.add(Box.createRigidArea(new Dimension(0, 5)));
   panel.add(new JButton("Button"));
   panel.add(Box.createRigidArea(new Dimension(0, 5)));
   panel.add(new JButton("Button"));
   JFrame f = new JFrame();
   f.add(panel);
   f.pack();
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   f.setLocationRelativeTo(null);
   f.setVisible(true);
 }

}

 </source>
   
  
 
  



Glue spreads the components as far apart as possible.

   <source lang="java">
 

import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component1 = new JButton();
   JButton component2 = new JButton();
   Box box = new Box(BoxLayout.X_AXIS);
   
   box.add(component1);
   box.add(Box.createGlue());
   box.add(component2);
 }

}


 </source>
   
  
 
  



Laying Out Components in a Row or Column

   <source lang="java">
 

import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component1 = new JButton();
   JButton component2 = new JButton();
   Box box = new Box(BoxLayout.X_AXIS);
   box = Box.createHorizontalBox();
   // Add components
   box.add(component1);
   box.add(component2);
 }

}


 </source>
   
  
 
  



Separating Components in a Row or Column

   <source lang="java">
 

import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component1 = new JButton();
   JButton component2 = new JButton();
   Box box = new Box(BoxLayout.X_AXIS);
   
   box.add(component1);
   box.add(Box.createGlue());
   box.add(component2);
 }

}


 </source>
   
  
 
  



Strut spreads the components apart by a fixed distance

   <source lang="java">
 

import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component1 = new JButton();
   Box box = new Box(BoxLayout.X_AXIS);
   int width = 10;
   box.add(Box.createHorizontalStrut(width));
   box.add(component1);
 }

}


 </source>