Во-первых, вы захотите разместить свой графический интерфейс на EDT. Библиотека Java предоставляет вам несколько вспомогательных методов, которые значительно облегчат вашу жизнь с помощью SwingUtilities.
Во-вторых, я бы попытался немного реорганизовать код и, возможно, переместить созданный вами JFrame в отдельный класс. В этом примере кода я сделал его частью того же класса, который содержит метод main, и расширяю JFrame здесь.
public class YourApp extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
YourApp app = new YourApp();
app.setupFrame();
}
});
}
private setupFrame() {
this.setSize(new Dimension(315, 306));
this.setContentPane(getMainpage());
this.setTitle("Shopping For Less: Main Page");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}