Controllo validità campi + salvataggio su file

This commit is contained in:
La Programmatrice Verde
2026-03-05 21:08:57 +01:00
parent ba10484545
commit ac101f06ec
2 changed files with 319 additions and 136 deletions

View File

@@ -82,7 +82,7 @@
<Component id="jScrollPane1" alignment="1" min="-2" pref="191" max="-2" attributes="0"/>
<Group type="103" alignment="0" groupAlignment="1" max="-2" attributes="0">
<Component id="pnlCorsi" alignment="0" pref="191" max="32767" attributes="0"/>
<Component id="jComboBox1" alignment="0" pref="191" max="32767" attributes="0"/>
<Component id="cmbCitta" alignment="0" pref="191" max="32767" attributes="0"/>
</Group>
</Group>
</Group>
@@ -128,7 +128,7 @@
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="lblCittà" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jComboBox1" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="cmbCitta" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
@@ -210,6 +210,7 @@
<Component class="javax.swing.JTextField" name="txtCodiceFiscale">
<Events>
<EventHandler event="focusGained" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="txtCodiceFiscaleFocusGained"/>
<EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txtCodiceFiscaleKeyReleased"/>
</Events>
</Component>
<Component class="javax.swing.JTextField" name="txtEmail">
@@ -222,7 +223,7 @@
<EventHandler event="focusGained" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="txtPasswordFocusGained"/>
</Events>
</Component>
<Component class="javax.swing.JComboBox" name="jComboBox1">
<Component class="javax.swing.JComboBox" name="cmbCitta">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="6">

View File

@@ -8,7 +8,10 @@ import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
import javax.swing.border.LineBorder;
import java.awt.Color;
import java.util.Arrays;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Pattern;
/**
*
@@ -33,7 +36,8 @@ public class RegistrazionePalestra extends javax.swing.JFrame {
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated
// Code">//GEN-BEGIN:initComponents
private void initComponents() {
Sesso = new javax.swing.ButtonGroup();
@@ -51,7 +55,7 @@ public class RegistrazionePalestra extends javax.swing.JFrame {
txtCodiceFiscale = new javax.swing.JTextField();
txtEmail = new javax.swing.JTextField();
txtPassword = new javax.swing.JPasswordField();
jComboBox1 = new javax.swing.JComboBox<>();
cmbCitta = new javax.swing.JComboBox<>();
jScrollPane1 = new javax.swing.JScrollPane();
txtaNote = new javax.swing.JTextArea();
btnRegistra = new javax.swing.JButton();
@@ -103,6 +107,11 @@ public class RegistrazionePalestra extends javax.swing.JFrame {
txtCodiceFiscaleFocusGained(evt);
}
});
txtCodiceFiscale.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
txtCodiceFiscaleKeyReleased(evt);
}
});
txtEmail.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
@@ -116,7 +125,8 @@ public class RegistrazionePalestra extends javax.swing.JFrame {
}
});
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Roma", "Londra", "Parigi", "Berlino", "Mosca", "Tjumen" }));
cmbCitta.setModel(new javax.swing.DefaultComboBoxModel<>(
new String[] { "Roma", "Londra", "Parigi", "Berlino", "Mosca", "Tjumen" }));
txtaNote.setColumns(20);
txtaNote.setLineWrap(true);
@@ -142,24 +152,22 @@ public class RegistrazionePalestra extends javax.swing.JFrame {
javax.swing.GroupLayout pnlCorsiLayout = new javax.swing.GroupLayout(pnlCorsi);
pnlCorsi.setLayout(pnlCorsiLayout);
pnlCorsiLayout.setHorizontalGroup(
pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlCorsiLayout.createSequentialGroup()
.addComponent(chkYoga)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(chkPilates)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(chkFitness)
.addGap(0, 0, Short.MAX_VALUE))
);
pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlCorsiLayout.createSequentialGroup()
.addComponent(chkYoga)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(chkPilates)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(chkFitness)
.addGap(0, 0, Short.MAX_VALUE)));
pnlCorsiLayout.setVerticalGroup(
pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlCorsiLayout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(chkYoga)
.addComponent(chkPilates)
.addComponent(chkFitness)))
);
pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlCorsiLayout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(chkYoga)
.addComponent(chkPilates)
.addComponent(chkFitness))));
Sesso.add(radSessoF);
radSessoF.setText("F");
@@ -176,126 +184,167 @@ public class RegistrazionePalestra extends javax.swing.JFrame {
javax.swing.GroupLayout pnlSessoLayout = new javax.swing.GroupLayout(pnlSesso);
pnlSesso.setLayout(pnlSessoLayout);
pnlSessoLayout.setHorizontalGroup(
pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSessoLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(radSessoM)
.addGap(18, 18, 18)
.addComponent(radSessoF)
.addGap(18, 18, 18)
.addComponent(radSessoNB)
.addContainerGap())
);
pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSessoLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(radSessoM)
.addGap(18, 18, 18)
.addComponent(radSessoF)
.addGap(18, 18, 18)
.addComponent(radSessoNB)
.addContainerGap()));
pnlSessoLayout.setVerticalGroup(
pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(radSessoM)
.addComponent(radSessoF)
.addComponent(radSessoNB))
);
pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(radSessoM)
.addComponent(radSessoF)
.addComponent(radSessoNB)));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblNome)
.addComponent(lblCognome)
.addComponent(lblCodiceFiscale)
.addComponent(lblEmail)
.addComponent(lblPassword)
.addComponent(lblSesso))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(35, 35, 35)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(txtNome, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
.addComponent(txtCognome, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtCodiceFiscale, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtEmail, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtPassword, javax.swing.GroupLayout.Alignment.LEADING)))
.addGroup(layout.createSequentialGroup()
.addGap(51, 51, 51)
.addComponent(pnlSesso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(9, Short.MAX_VALUE)
.addComponent(btnRegistra)
.addGap(35, 35, 35))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblCittà)
.addComponent(lblCorsi)
.addComponent(lblNote))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(btnCancella)
.addGap(41, 41, 41)
.addComponent(btnChiudi))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(pnlCorsi, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 191, Short.MAX_VALUE)
.addComponent(jComboBox1, javax.swing.GroupLayout.Alignment.LEADING, 0, 191, Short.MAX_VALUE))))
.addContainerGap())
);
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblNome)
.addComponent(lblCognome)
.addComponent(lblCodiceFiscale)
.addComponent(lblEmail)
.addComponent(lblPassword)
.addComponent(lblSesso))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(35, 35, 35)
.addGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING,
false)
.addComponent(txtNome,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, 191,
Short.MAX_VALUE)
.addComponent(txtCognome,
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtCodiceFiscale,
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtEmail,
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtPassword,
javax.swing.GroupLayout.Alignment.LEADING)))
.addGroup(layout.createSequentialGroup()
.addGap(51, 51, 51)
.addComponent(pnlSesso, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(9, Short.MAX_VALUE)
.addComponent(btnRegistra)
.addGap(35, 35, 35))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblCittà)
.addComponent(lblCorsi)
.addComponent(lblNote))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(btnCancella)
.addGap(41, 41, 41)
.addComponent(btnChiudi))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 191,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(pnlCorsi,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 191,
Short.MAX_VALUE)
.addComponent(cmbCitta,
javax.swing.GroupLayout.Alignment.LEADING, 0,
191, Short.MAX_VALUE))))
.addContainerGap()));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblNome)
.addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblCognome))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtCodiceFiscale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblCodiceFiscale))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblEmail))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblSesso, javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblPassword))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pnlSesso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCittà)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(pnlCorsi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblCorsi))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblNote)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnRegistra)
.addComponent(btnCancella)
.addComponent(btnChiudi))
.addContainerGap())
);
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblNome)
.addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblCognome))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtCodiceFiscale, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblCodiceFiscale))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblEmail))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblSesso, javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtPassword,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblPassword))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pnlSesso, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCittà)
.addComponent(cmbCitta, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(pnlCorsi, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblCorsi))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblNote)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 121,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnRegistra)
.addComponent(btnCancella)
.addComponent(btnChiudi))
.addContainerGap()));
pack();
}// </editor-fold>//GEN-END:initComponents
private void txtCodiceFiscaleKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_txtCodiceFiscaleKeyReleased
txtCodiceFiscale.setText(txtCodiceFiscale.getText().toUpperCase());
}// GEN-LAST:event_txtCodiceFiscaleKeyReleased
private void btnRegistraActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnRegistraActionPerformed
String nome = txtNome.getText().trim();
String cognome = txtCognome.getText().trim();
@@ -334,16 +383,149 @@ public class RegistrazionePalestra extends javax.swing.JFrame {
pnlCorsi.setBorder(new LineBorder(Color.red));
}
JOptionPane.showMessageDialog(null, "Inserire tutti i dati richiesti.");
return;
}
if (!isCodiceFiscaleValid(codiceFiscale)) {
JOptionPane.showMessageDialog(null, "Il codice fiscale non è valido.");
txtCodiceFiscale.setBorder(new LineBorder(Color.red));
return;
}
if (!isEmailValid(email)) {
JOptionPane.showMessageDialog(null, "L'indirizzo email non è valido.");
txtEmail.setBorder(new LineBorder(Color.red));
return;
}
salvaSuFile();
successMeassage(nome, cognome, getSelectedSesso(), getSelectedCorsi());
}// GEN-LAST:event_btnRegistraActionPerformed
private boolean isCorsiEmpty() {
return !(chkYoga.isSelected() || chkPilates.isSelected() || chkFitness.isSelected());
}
private boolean isCodiceFiscaleValid(String codiceFiscale) {
Pattern pattern = Pattern.compile("[A-Z]{6}[ABCDEHLMPRST]{3}\\d{2}[A-Z]\\d{3}[A-Z]");
return pattern.matcher(codiceFiscale).find();
}
private boolean isEmailValid(String email) {
Pattern pattern = Pattern.compile("[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}");
return pattern.matcher(email).find();
}
private int getSelectedSesso() {
int sessoSelected = -1;
if (radSessoM.isSelected()) {
sessoSelected = 0;
}
if (radSessoF.isSelected()) {
sessoSelected = 1;
}
if (radSessoNB.isSelected()) {
sessoSelected = 2;
}
return sessoSelected;
}
private String getSelectedCorsi() {
StringBuilder sb = new StringBuilder();
if (chkYoga.isSelected()) {
sb.append("\n");
sb.append(chkYoga.getText());
}
if (chkPilates.isSelected()) {
sb.append("\n");
sb.append(chkPilates.getText());
}
if (chkFitness.isSelected()) {
sb.append("\n");
sb.append(chkFitness.getText());
}
return sb.toString();
}
private void salvaSuFile() {
String nome = txtNome.getText().trim();
String cognome = txtCognome.getText().trim();
String codiceFiscale = txtCodiceFiscale.getText().trim().toUpperCase();
String email = txtEmail.getText().trim();
String password = new String(txtPassword.getPassword());
String sesso;
String note = txtaNote.getText();
StringBuilder sb = new StringBuilder();
switch (getSelectedSesso()) {
case 0:
sesso = "M";
break;
case 1:
sesso = "F";
break;
case 2:
sesso = "NB";
break;
default:
sesso = "";
break;
}
sb.append("Nome: ");
sb.append(nome);
sb.append("\nCognome: ");
sb.append(cognome);
sb.append("\nCodice fiscale: ");
sb.append(codiceFiscale);
sb.append("\nEmail: ");
sb.append(email);
sb.append("\nPassword: ");
sb.append(password);
sb.append("\nSesso: ");
sb.append(sesso);
sb.append("\nCittà: ");
sb.append(cmbCitta.getSelectedItem());
sb.append("\nCorsi: ");
sb.append(getSelectedCorsi().replace("\n", ", ").replaceFirst(", ", ""));
sb.append("\nNote: ");
sb.append(note);
sb.append("\n--FINE REGISTRAZIONE SOPRA--");
try (BufferedWriter bw = new BufferedWriter(new FileWriter("./src/registrazionepalestra/registrazioni.txt", true))) {
bw.write(sb.toString());
} catch (IOException _) {
JOptionPane.showMessageDialog(null, "Errore nel salvataggio della registrazione.");
}
}
private void successMeassage(String nome, String cognome, int sesso, String corsi) {
String letteraSignor;
switch (sesso) {
case 0:
letteraSignor = "e";
break;
case 1:
letteraSignor = "a";
break;
case 2:
letteraSignor = "ə";
break;
default:
letteraSignor = "";
break;
}
JOptionPane.showMessageDialog(null, "Complimenti signor" + letteraSignor + " " + nome + " " + cognome
+ ", la registrazione ai seguenti corsi è avvenuta con successo:" + corsi);
}
private void txtNomeFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_txtNomeFocusGained
txtNome.setBorder(null);
}// GEN-LAST:event_txtNomeFocusGained
@@ -425,7 +607,7 @@ public class RegistrazionePalestra extends javax.swing.JFrame {
private javax.swing.JCheckBox chkFitness;
private javax.swing.JCheckBox chkPilates;
private javax.swing.JCheckBox chkYoga;
private javax.swing.JComboBox<String> jComboBox1;
private javax.swing.JComboBox<String> cmbCitta;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblCittà;
private javax.swing.JLabel lblCodiceFiscale;