Как изменить размер компонента в JFrame

Предположим, у меня есть JPanel в JFrame. Когда я вызываю метод, который изменяет предпочтительный размер этой JPanel, он не изменяется.

Код выглядит примерно так:

public class SomePanel extends JPanel{

    public SomePanel(){
        setPreferredSize( new Dimension( 390, 40 ) );
        setBackground( Color.BLACK );
    }

    public void expand(){
        setPreferredSize( new Dimension( 390, 200 ) );
    }

    public static void main( String args[] ){
        JFrame frame = new JFrame();
        frame.setSize( 450, 500 );
        frame.setLayout( new FlowLayout() );

        SomePanel somePanel = new SomePanel();

        frame.add( somePanel );
        frame.setVisible( true );

        somePanel.expand();
    }
}

Есть ли что-то, что я должен сделать в первую очередь? Я пытался проверить размер JPanel при вызове expand (). Высота JPanel до и после установки предпочтительного размера остается равной 40.

Я также попытался использовать переменную Dimension, и это тоже не сработало.

    Dimension dimension;

    public SomePanel(){
        dimension = new Dimension( 390, 40 );
        ...
    }

    public expand(){
        dimension.setSize( 390, 200 );
        setPreferredSize( dimension );
    } 

Ответы на вопрос(3)

Ваш ответ на вопрос