FlowLayout not displaying components while GridLayout does?

java, layout-manager, swing

Solution

1) `FlowLayout` pretty accepting `PreferredSize` that came from `JComponent`, each of `JComponents` can have got different `Dimension` on the screen

example (uncomnent `getMinimumSize` & `getMinimumSize`)

import java.awt.*;
import javax.swing.*;

public class CustomComponent extends JFrame {

    private static final long serialVersionUID = 1L;

    public CustomComponent() {
        setTitle("Custom Component Test / BorderLayout");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
    }

    public void display() {
        add(new CustomComponents0(), BorderLayout.NORTH);
        add(new CustomComponents0(), BorderLayout.CENTER);
        add(new CustomComponents0(), BorderLayout.SOUTH);
        add(new CustomComponents0(), BorderLayout.EAST);
        pack();
        // enforces the minimum size of both frame and component
        setMinimumSize(getMinimumSize());
        setPreferredSize(getPreferredSize());
        setVisible(true);
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                CustomComponent main = new CustomComponent();
                main.display();
            }
        };
        javax.swing.SwingUtilities.invokeLater(r);
    }
}

class CustomComponents0 extends JLabel {

    private static final long serialVersionUID = 1L;

    /*@Override
    public Dimension getMinimumSize() {
    return new Dimension(200, 100);
    }

    @Override
    public Dimension getPreferredSize() {
    return new Dimension(300, 200);
    }*/
    @Override
    public void paintComponent(Graphics g) {
        int margin = 10;
        Dimension dim = getSize();
        super.paintComponent(g);
        g.setColor(Color.red);
        g.fillRect(margin, margin, dim.width - margin * 2, dim.height - margin * 2);
    }
}

2) `GridLayou`t create proportional area for every `JComponents`, then accepting only `JComponent` that have got larger `Dimnesion` came from `PreferredSize`

3) for `GridLayout` I'm talking about method `pack()`, not if is there `JFrame#setSize()`, for `FLowLayout` doesn't matter,

Problem

I'm making an application to act as a hub of some sorts, where the user can store shortcuts to their favorite applications and easily launch them. I'm having some problems with `FlowLayout`, though. When I use `GridLayout`, the components display perfectly. When I use `FlowLayout`, nothing displays at all. GridLayout: FlowLayout: All I have changed is the `LayoutManager`. When I call `getComponentCount`, they both respond with 9. I thought this post was pretty long, so I put a snippet of my code on Code Tidy (from Pastebin) Thank you in advance for your help!

Original source