Ciao,
devo implementare il mio primo programma con interfaccia grafica e purtroppo non ho tempo di andare a studiarmi per bene tutto quello che serve, perciò ho creato tramite NetBeans la prima finestra del programma, anche se sono consapevole che forse non è il modo migliore per farlo. In effetti ha generato un mucchio di codice che fatico a comprendere. So a grandi linee come funziona ma in effetti nemmeno sul mio libro si parla di interfacce grafiche e anche le lezioni sono state scarne per non dire nulle a riguardo.
Vorrei qualche consiglio su come proseguire.
Come posso fare in modo che i pulsanti creati al click facciano qualcosa?
Vi posto il codice fatto finora:

codice:
public class StartPanel extends JFrame {
    /**
     * Creates new form StartPanel
     */
    public StartPanel() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pulsanteTavoli = new JButton();
        pulsantePrenotazioni = new JButton();
        pulsanteImpostazioni = new JButton();
        pulsanteUscita = new JButton();
        jLabel1 = new JLabel();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setTitle("Table Manager");
        setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
        setForeground(UIManager.getDefaults().getColor("EditorPane.background"));
        setName("startPanel"); // NOI18N
        setResizable(false);

        pulsanteTavoli.setFont(new Font("DejaVu Sans", 1, 15)); // NOI18N
        pulsanteTavoli.setText("Tavoli");

        pulsantePrenotazioni.setFont(new Font("DejaVu Sans", 1, 15)); // NOI18N
        pulsantePrenotazioni.setText("Prenotazioni");

        pulsanteImpostazioni.setFont(new Font("DejaVu Sans", 1, 15)); // NOI18N
        pulsanteImpostazioni.setText("Impostazioni");

        pulsanteUscita.setFont(new Font("DejaVu Sans", 1, 15)); // NOI18N
        pulsanteUscita.setText("Uscita");

        jLabel1.setFont(new Font("DejaVu Sans", 2, 18)); // NOI18N
        jLabel1.setText("Benvenuti in Table Manager");

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap(80, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jLabel1, GroupLayout.PREFERRED_SIZE, 291, GroupLayout.PREFERRED_SIZE)
                        .addGap(41, 41, 41))
                    .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)
                            .addComponent(pulsanteUscita, GroupLayout.PREFERRED_SIZE, 142, GroupLayout.PREFERRED_SIZE)
                            .addComponent(pulsanteTavoli, GroupLayout.PREFERRED_SIZE, 142, GroupLayout.PREFERRED_SIZE)
                            .addComponent(pulsanteImpostazioni, GroupLayout.PREFERRED_SIZE, 142, GroupLayout.PREFERRED_SIZE)
                            .addComponent(pulsantePrenotazioni, GroupLayout.PREFERRED_SIZE, 142, GroupLayout.PREFERRED_SIZE))
                        .addGap(130, 130, 130))))
        );

        layout.linkSize(SwingConstants.HORIZONTAL, new Component[] {pulsanteImpostazioni, pulsantePrenotazioni, pulsanteTavoli, pulsanteUscita});

        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, GroupLayout.PREFERRED_SIZE, 45, GroupLayout.PREFERRED_SIZE)
                .addGap(37, 37, 37)
                .addComponent(pulsanteTavoli, GroupLayout.PREFERRED_SIZE, 44, GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(pulsanteImpostazioni, GroupLayout.PREFERRED_SIZE, 44, GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(pulsantePrenotazioni, GroupLayout.PREFERRED_SIZE, 44, GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(pulsanteUscita, GroupLayout.PREFERRED_SIZE, 44, GroupLayout.PREFERRED_SIZE)
                .addContainerGap(54, Short.MAX_VALUE))
        );

        layout.linkSize(SwingConstants.VERTICAL, new Component[] {pulsanteImpostazioni, pulsantePrenotazioni, pulsanteTavoli, pulsanteUscita});

        pack();
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(StartPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(StartPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(StartPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(StartPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new StartPanel().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private JLabel jLabel1;
    private JButton pulsanteImpostazioni;
    private JButton pulsantePrenotazioni;
    private JButton pulsanteTavoli;
    private JButton pulsanteUscita;
    // End of variables declaration//GEN-END:variables
}
Quel layout.setHorizontalGroup a cosa serve e perché ha una marea di parametri fra parentesi?
I blocchi try a cosa servono?
Parto dalla cosa più semplice: come posso fare in modo che premendo il pulsante Uscita si esca dall'applicazione? So che bisogna usare gli actionListener, ma devo fare una classe per ogni bottone??
Infine non capisco proprio perché la dichiarazione delle variabili dei pulsanti sono messe alla fine del codice ma sono in realtà già utilizzate prima.
Scusate le domande imbarazzanti ma io davvero devo proprio togliermi questo esame dalle scatole, non miro a diventare un programmatore java coi fiocchi
Eventualmente mi sapete suggerire una guida molto semplice e pratica?

Grazie mille.