From the api on GridLayout:
The container is divided into equal-sized rectangles, and one component is placed in each rectangle.
Try using FlowLayout or GridBagLayout for your set size to be meaningful. Also, @Serplat is correct. You need to use setPreferredSize( Dimension ) instead of setSize( int, int ).
JPanel displayPanel = new JPanel(); // JPanel displayPanel = new JPanel( new GridLayout( 4, 2 ) ); // JPanel displayPanel = new JPanel( new BorderLayout() ); // JPanel displayPanel = new JPanel( new GridBagLayout() ); JTextField titleText = new JTextField( "title" ); titleText.setPreferredSize( new Dimension( 200, 24 ) ); // For FlowLayout and GridLayout, uncomment: displayPanel.add( titleText ); // For BorderLayout, uncomment: // displayPanel.add( titleText, BorderLayout.NORTH ); // For GridBagLayout, uncomment: // displayPanel.add( titleText, new GridBagConstraints( 0, 0, 1, 1, 1.0, // 1.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, // new Insets( 0, 0, 0, 0 ), 0, 0 ) );