public MainFrame() {
        initComponents();
        preferences = Preferences.userRoot().node(this.getClass().getName());
        /* Check if the program runs on the machine for the first time */
        final String pathToPDFLaTeXFile = preferences.get("pathToPDFLaTeXFile", null);
        final String pathToPDFExportFolder = preferences.get("pathToPDFExportFolder", null);
        if ((pathToPDFLaTeXFile == null) || (pathToPDFExportFolder == null))
            Config.initPreferences(preferences);
        if ((pathToPDFLaTeXFile != null) && (!pathToPDFLaTeXFile.equals(Config.DEFAULT)))
            Config.setPDFLaTeXFile(new File(pathToPDFLaTeXFile));
        if ((pathToPDFExportFolder != null) && (!pathToPDFExportFolder.equals(Config.DEFAULT)))
            Config.setPDFExportFolder(new File(pathToPDFExportFolder));
        
        /* Group some components for easier handling */
        
        parameterLabelArray = new javax.swing.JLabel[] {
            parameter1Label, parameter2Label, parameter3Label, parameter4Label
        };
    
        parameterArray = new javax.swing.JTextField[] {
            parameter1, parameter2, parameter3, parameter4
        };
    
        problemPartComponentsArray = new JComponent[] {
            userAnswerField, checkButton,
            showSolutionLaTeXButton, showSolutionPlaintextButton,
            copyToClipboardButton, exportToPDFButton, resetButton
        };
    }