-- The JTextFields are constructed using the no-arg constructor, so the preferredSize.width is a few pixels.
-- Those text fields that are in the same column as a JLabel adopt the preferred width of the label
-- loanPeriodLabel is added with x=RELATIVE, which evaluates to 2 (relative to 1 for interestRateLabel) and y=2, so occupies the same cell as loanPeriod

A note: posting several commented lines only adds clutter, as does an empty implemention of an interfacethat has nothing to do with your question. You should take the trouble to remove them when posting on a forum. Also, there's no point repeatedly assigning the same value to the same field of your GridBagConstraints. Here's your code correctly formatted/indented and with all redundant lines removed; no other changes, except to change the fields to local variables (this is a layout problem; they aren't needed at the class level) and launch the GUI on the EDT (see Lesson: Concurrency in Swing (The Java™ Tutorials > Creating a GUI With JFC/Swing)).