Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Vertical BoxLayout-managed container

import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics; import java.awt.LayoutManager; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class VerticalBoxLayoutManagerContainerTest {   public static void main(String[] args) {     JFrame f = new JFrame();     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     Container pane = new BoxPanel();     f.setContentPane(pane);     BoxLayout bl = new BoxLayout(pane, BoxLayout.Y_AXIS);     pane.setLayout(bl);     for (float align = 0.0f; align <= 1.0f; align += 0.25f) {       JButton button = new JButton("X Alignment = " + align);       button.setAlignmentX(align);       pane.add(button);       pane.add(Box.createRigidArea(new Dimension(0, 15)));     }     f.setSize(400, 300);     f.setVisible(true);   } } class BoxPanel extends JPanel {   public void paintChildren(Graphics g) {     super.paintChildren(g);     Dimension size = getSize();     LayoutManager manager = getLayout();     if ((manager != null) && (manager instanceof BoxLayout)) {       BoxLayout layout = (BoxLayout) manager;       boolean vertical = true;       if (vertical) {         int axis = (int) (layout.getLayoutAlignmentX(this) * size.width);         g.fillRect(axis - 1, 0, 3, size.height);       } else {         int axis = (int) (layout.getLayoutAlignmentY(this) * size.height);         g.fillRect(0, axis - 1, size.width, 3);       }     }   } }