Salve,
Volevo chiedere alcune info per quanto riguarda la GUI in Java. In pratica ho creato un piccolo algoritmo che simula una rubrica, da console funziona abbastanza bene, almeno per quello che mi serviva. Ma mi stavo chiedendo se per creare un interfaccia grafica si debba pensare a priori le classi, metodi e il main in questa ottica, oppure c'è da creare un nuovo file che integra la grafica?
Di seguito vi elenco il codice del main e della classe che ho creato.
MAIN
package Agenda;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
boolean stopDoWhile = true;
Scanner input = new Scanner(System.in);
Contatti Agenda = new Contatti();
System.out.println("\t\t\t\t\tBenvenuto nella tua Agenda");
System.out.println("");
System.out.println("");
do {
System.out.println("1)Aggiungi un nuovo contatto\t" + "2)Visualizza lista contatti\t"
+ "3)Elimina un contatto\t" + "4)Modifica un contatto");
String sceltaOpzione = input.nextLine().trim();
if (sceltaOpzione.equals("1")) {
Agenda.AddContatto();
} else if (sceltaOpzione.equals("2")) {
Agenda.displayListContatti();
} else if (sceltaOpzione.equals("3")) {
Agenda.removeContatto();
} else if (sceltaOpzione.equals("4")) {
Agenda.editContatto();
}
System.out.println("");
System.out.println("Desideri ritornare al menu precendete? Y/N");
String YN = input.nextLine();
System.out.println("");
if (YN.equalsIgnoreCase("Y")) {
stopDoWhile = true;
} else if (YN.equalsIgnoreCase("N")) {
stopDoWhile = false;
System.out.println("");
System.out.println("Arrivederci");
}
} while (stopDoWhile);
}
}
CLASSE
package Agenda;
import java.util.regex.*;
import java.util.ArrayList;
import java.util.Scanner;
public class Contatti {
private String Nome, Cognome, contattoSkype, contattoEmail, Cellulare, Fisso;
Scanner input = new Scanner(System.in);
ArrayList<Contatti> Agende = new ArrayList<Contatti>();
public Contatti() {
}
public Contatti(String nome, String cognome, String contattoSkype, String contattoEmail, String Cellulare,
String Fisso) {
this.Nome = nome;
this.Cognome = cognome;
this.contattoSkype = contattoSkype;
this.contattoEmail = contattoEmail;
this.Cellulare = Cellulare;
this.Fisso = Fisso;
}
public String getCellulare() {
return Cellulare;
}
public void setCellulare(String cellulare) {
Cellulare = cellulare;
}
public String getFisso() {
return Fisso;
}
public void setFisso(String fisso) {
Fisso = fisso;
}
public String getNome() {
return Nome;
}
public void setNome(String nome) {
Nome = nome;
}
public String getCognome() {
return Cognome;
}
public void setCognome(String cognome) {
Cognome = cognome;
}
public String getContattoSkype() {
return contattoSkype;
}
public void setContattoSkype(String contattoSkype) {
this.contattoSkype = contattoSkype;
}
public String getContattoEmail() {
return contattoEmail;
}
public void setContattoEmail(String contattoEmail) {
this.contattoEmail = contattoEmail;
}
public void AddContatto() {
/*
* Chiedo all'utente di inserire i dati che andrò a salvare all'interno di un
* arraylist che conterrà una nuova instanza della classe Contatti
*/
System.out.println("");
int i;
do {
System.out.println("Inserisci il nome del contatto");
Nome = input.nextLine();
if (Pattern.matches("^[a-zA-Z]+$", Nome)) {
}
else {
System.out.println("");
System.out.println("Errore! Il nome deve contenere solo lettere");
System.out.println("");
}
for (i = 0; i < Agende.size(); i++) {
if (Nome.equalsIgnoreCase(Agende.get(i).getNome())) {
System.out.println("Questo nome è già presente in agenda");
do {
System.out.println("Inserisci il nome del contatto");
Nome = input.nextLine();
} while ((Nome.equalsIgnoreCase(Agende.get(i).getNome())));
}
}
} while (!Pattern.matches("^[a-zA-Z]+$", Nome));
System.out.println("");
do {
System.out.println("Inserisci il cognome del contatto");
Cognome = input.nextLine();
if ((Pattern.matches("^[a-zA-Z]+$", Cognome))) {
} else {
System.out.println("");
System.out.println("Errore! Il cognome deve contenere solo lettere");
System.out.println("");
}
for (i = 0; i < Agende.size(); i++) {
if (Cognome.equalsIgnoreCase(Agende.get(i).getCognome())) {
System.out.println("Questo cognome è già presente in agenda");
do {
System.out.println("Inserisci il cognome del contatto");
Cognome = input.nextLine();
} while ((Cognome.equalsIgnoreCase(Agende.get(i).getCognome())));
}
}
} while (!(Pattern.matches("^[a-zA-Z]+$", Cognome)));
System.out.println("");
do {
System.out.println("Inserisci il numero di cellulare");
Cellulare = input.nextLine();
if ((Pattern.matches("[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", Cellulare))) {
} else {
System.out.println("");
System.out.println(
"Errore! Potresti aver inserito meno o più di 10 numeri, oppure hai inserito una lettera");
System.out.println("");
}
for (i = 0; i < Agende.size(); i++) {
if (Cellulare.equalsIgnoreCase(Agende.get(i).getCellulare())) {
System.out.println("Questo numero di cellulare è già presente in agenda");
do {
System.out.println("Inserisci il numero di cellulare");
Cellulare = input.nextLine();
} while ((Cellulare.equalsIgnoreCase(Agende.get(i).getCellulare())));
}
}
} while (!(Pattern.matches("[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", Cellulare)));
System.out.println("");
do {
System.out.println("Inserisci il numero fisso");
Fisso = input.nextLine();
if ((Pattern.matches("[0][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", Fisso))) {
} else if ((Pattern.matches("[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", Fisso))) {
System.out.println("");
System.out.println("Il numero telefonico fisso deve inziare con la cifra 0");
System.out.println("");
} else {
System.out.println("");
System.out.println(
"Errore! Potresti aver inserito meno o più di 10 numeri, oppure hai inserito una lettera");
System.out.println("");
}
for (i = 0; i < Agende.size(); i++) {
if (Fisso.equalsIgnoreCase(Agende.get(i).getFisso())) {
System.out.println("Questo numero fisso è già presente in agenda");
do {
System.out.println("Inserisci il numero fisso");
Fisso = input.nextLine();
} while ((Fisso.equalsIgnoreCase(Agende.get(i).getFisso())));
}
}
} while (!(Pattern.matches("[0][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", Fisso)));
System.out.println("");
do {
System.out.println("Inserisci il contatto Skype");
contattoSkype = input.nextLine();
if ((Pattern.matches("^[A-Za-z0-9+_.-]+(.+)$", contattoSkype))) {
}
for (i = 0; i < Agende.size(); i++) {
if (contattoSkype.equalsIgnoreCase(Agende.get(i).getContattoSkype())) {
System.out.println("Questo contatto Skype è già presente in agenda");
do {
System.out.println("Inserisci il contatto Skype");
contattoSkype = input.nextLine();
} while ((Nome.equalsIgnoreCase(Agende.get(i).getContattoSkype())));
}
}
} while (!(Pattern.matches("^[A-Za-z0-9+_.-]+(.+)$", contattoSkype)));
System.out.println("");
do {
System.out.println("Inserisci il contatto email");
contattoEmail = input.nextLine();
if ((Pattern.matches("^[A-Za-z0-9+_.-]+@(.+)[.](.+)$", contattoEmail))) {
} else {
System.out.println("Errore! Email non valida");
}
for (i = 0; i < Agende.size(); i++) {
if (contattoEmail.equalsIgnoreCase(Agende.get(i).getContattoEmail())) {
System.out.println("Questo numero fisso è già presente in agenda");
do {
System.out.println("Inserisci il contatto email");
contattoEmail = input.nextLine();
} while ((contattoEmail.equalsIgnoreCase(Agende.get(i).getContattoEmail())));
}
}
} while (!(Pattern.matches("^[A-Za-z0-9+_.-]+@(.+)[.](.+)$", contattoEmail)));
System.out.println("");
Agende.add(new Contatti(Nome, Cognome, contattoSkype, contattoEmail, Cellulare, Fisso));
System.out.println("Il contatto è stato aggiunto");
}
public void displayListContatti() {
/*
* Questo metodo consente all'utente di poter visualizzare la lista dei contatti
* salvati in agenda, il primo controllo si accerta che all'interno della lista
* Agende non ci siano elementi, se è vera la condizione stamperà il messaggio
* "Non ci sono contatti in agenda", e una selezione nel caso l'utente voglia
* ritornare al menu precedente o uscire dal programma.
*
* Se invece la lista ha degli elementi al suo interno, verrano mostrati tutti i
* contatti esistenti al suo interno, e alla fine della lista un menu che chiede
* all'utente se vuole visionare i recapiti di un contatto. Dopo di che chiede
* di inserire il nome o cognome del contatto.
*/
if (Agende.isEmpty()) {
System.out.println("Non ci sono contatti in agenda");
} else {
System.out.println("");
System.out.println("\t\t\t\t\tLista contatti in agenda");
System.out.println("");
for (int i = 0; i < Agende.size(); i++) {
System.out.println(i + ")" + "Nome contatto: " + Agende.get(i).getNome() + " |" + " Cognome contatto: "
+ Agende.get(i).getCognome());
}
System.out.println("");
System.out.println("Desidere visualizzare i recapiti di un contatto? Y/N");
String dettaglioContatto = input.nextLine();
if (dettaglioContatto.equalsIgnoreCase("Y")) {
System.out.println(
"Inserisci il nome o cognome del contatto il quale desideri visulizzare il dettaglio dei recapiti");
String NomeCognome = input.nextLine();
System.out.println("");
for (int i = 0; i < Agende.size(); i++) {
if (NomeCognome.equalsIgnoreCase(Agende.get(i).getCognome())
|| (NomeCognome.equalsIgnoreCase(Agende.get(i).getNome()))) {
System.out.println(i + ") " + "Contatto Skype: " + Agende.get(i).getContattoSkype() + " |"
+ " Contatto Email: " + Agende.get(i).getContattoEmail() + " |" + " Cellulare: "
+ Agende.get(i).getCellulare() + " |" + " Numero fisso:" + Agende.get(i).getFisso());
}
}
}
}
}
public void removeContatto() {
/*
* Questo metodo invece elimina un contatto dalla lista, funziona pressappoco
* come il metodo per visionare la lista contatti, con la differenza che dopo
* aver ciclato con un form e matchato in contatto da eliminare, richiamo il
* metodo remove() ed elimino il contatto dalla lista.
*/
System.out.println("");
System.out.println("Inserisci il nome o il congnome del contatto che vuoi eliminare");
System.out.println("");
for (int i = 0; i < Agende.size(); i++) {
System.out.println(i + ")" + "Nome contatto: " + Agende.get(i).getNome() + " |" + " Cognome contatto: "
+ Agende.get(i).getCognome());
}
System.out.println("");
String eliminaContatto = input.nextLine();
for (int i = 0; i < Agende.size(); i++) {
if (eliminaContatto.equalsIgnoreCase(Agende.get(i).getNome())
|| eliminaContatto.equalsIgnoreCase(Agende.get(i).getCognome())) {
Agende.get(i);
System.out.println("");
System.out.println("Contatto Eliminato");
} else if (!eliminaContatto.equalsIgnoreCase(Agende.get(i).getNome())) {
System.out.println("");
System.out.println("Il contatto non esiste");
}
}
}
public void editContatto() {
String continuaModifica;
do {
System.out.println("");
System.out.println("Inserisci il nome o il congnome del contatto che vuoi modificare");
System.out.println("");
for (int i = 0; i < Agende.size(); i++) {
System.out.println(i + ")" + "Nome contatto: " + Agende.get(i).getNome() + " |" + " Cognome contatto: "
+ Agende.get(i).getCognome());
}
System.out.println("");
String editContatto = input.nextLine();
int i;
for (i = 0; i < Agende.size(); i++) {
if (editContatto.equalsIgnoreCase(Agende.get(i).getNome())
|| editContatto.equalsIgnoreCase(Agende.get(i).getCognome())) {
System.out.println("Quale recapito vuoi modificare?\n"
+ "Inserisci il nome del tipo: Cellulare, Fisso, Skype, Email.");
String tipoContatto = input.nextLine();
if (tipoContatto.equalsIgnoreCase("Cellulare")) {
System.out.println("Inserisci il nuovo numero di cellulare");
String Cellulare = input.nextLine();
Agende.get(i).setCellulare(Cellulare);
} else if (tipoContatto.equalsIgnoreCase("Fisso")) {
System.out.println("Inserisci il nuovo numero fisso");
String Fisso = input.nextLine();
Agende.get(i).setFisso(Fisso);
} else if (tipoContatto.equalsIgnoreCase("Skype")) {
System.out.println("Inserisci il nuovo contatto Skype");
String Skype = input.nextLine();
Agende.get(i).setContattoSkype(Skype);
} else if (tipoContatto.equalsIgnoreCase("Email")) {
System.out.println("Inserisci il nuovo contatto email");
String Email = input.nextLine();
Agende.get(i).setContattoEmail(Email);
}
System.out.println("");
System.out.println("Contatto Modificato");
}
}
System.out.println("Desideri continuare nella modifica dei contatti? Y/N");
continuaModifica = input.nextLine();
} while (continuaModifica.equalsIgnoreCase("Y"));
}
}
Qui invece ho fatto una piccola grafica, una bozza su quello che mi piacerebbe fare, cioè al click sul bottone dovrebbe attivare il metodo correlato.