FlowLayout.CENTER not centering the components

10,578

The reason all components are right aligned is that you reset the layout of the JFrame to FlowLayout.RIGHT here:

FlowLayout three = new FlowLayout(FlowLayout.RIGHT);
setLayout(three);

This supercedes the earlier call to center align components.

Share:
10,578
Rostro
Author by

Rostro

Updated on June 04, 2022

Comments

  • Rostro
    Rostro almost 2 years

    I was using FlowLayout.CENTER to center a string and some checkboxes but it is not centering them. I've used this before and it worked fine. Here is the code:

    import javax.swing.*;
    import java.awt.*;
    
    public class pizza extends JFrame {
    //row 1
      JPanel row1 = new JPanel();
      JLabel select = new JLabel("Please select the size you would like"); 
    //row 2
      JPanel row2 = new JPanel();
      JCheckBox ninein = new JCheckBox("9 inch, $5.00", false);
      JCheckBox twelvein = new JCheckBox("12 inch, $10.00", false);
      JCheckBox seventeenin = new JCheckBox("17 inch, $15.00", false);
    //row 3
      JPanel row3 = new JPanel();
      JLabel toppingslab = new JLabel("Please select your toppings");
      JCheckBox cheese = new JCheckBox("Cheese, .50");
      JCheckBox pepperoni = new JCheckBox("Pepperoni, .50");
      JCheckBox onions = new JCheckBox("Onions, .50");
      JCheckBox peppers = new JCheckBox("Peppers, .50");
      JCheckBox bacon = new JCheckBox("Bacon! Free (because it's bacon)");
    //row4
      JPanel row4 = new JPanel();
      JLabel totallab = new JLabel("Total");
      JTextField total = new JTextField(10);
    
    public pizza(){
        setTitle("Pizza Ordering");
        setSize(500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
      total.setEnabled(false);
    
    FlowLayout one = new FlowLayout(FlowLayout.CENTER);
      setLayout(one);
    
      row1.add(select);
      add(row1);
    
      row2.add(ninein);
      row2.add(twelvein);
      row2.add(seventeenin); 
      add(row2);
    
    GridLayout two = new GridLayout(6,2);
      row3.setLayout(two);
    
      row3.add(toppingslab);
      row3.add(cheese);
      row3.add(pepperoni);
      row3.add(onions);
      row3.add(peppers);
      row3.add(bacon);
      add(row3);
    
    FlowLayout three = new FlowLayout(FlowLayout.RIGHT);
      setLayout(three);
    
      row4.add(totallab);
      row4.add(total);
      add(row4);  
        } 
    public static void main(String[] args) {
        pizza pizz = new pizza();
    }
    }
    

    Neither RIGHT or LEFT make a difference as well it simply aligns it to the right.