
Originariamente inviata da
andbin
Non ho possibilità di provare quel codice, perché chiaramente mancano le classi Reservation, ecc.. Non si vede però nulla riguardo la creazione del frame (sarà ovviamente da un'altra parte ...) e vedo invece che hai usato SpringLayout, che personalmente te lo sconsiglio, perché insieme a GroupLayout è uno dei layout manager più complessi, contorti e difficili da usare.
Il 99,9% delle interfacce grafiche Swing si può tranquillamente fare con gli altri layout manager più semplici di AWT/Swing.
Se non volessi fare troppo modifiche al codice per passare da un layout all'altro invece come posso fare?
Le classi che dovrebbero servire sono
Reservation
codice:
package model;
public class Reservation {
User user;
String partenza;
String destinazione;
String modalita;
Taxi taxi;
Percorso percorso;
public Percorso getPercorso() {
return percorso;
}
public void setPercorso(Percorso percorso) {
this.percorso = percorso;
}
public Reservation(User user, String partenza, String destinazione, String modalita){
this.user=user;
this.partenza=partenza;
this.destinazione=destinazione;
this.modalita=modalita;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getPartenza() {
return partenza;
}
public void setPartenza(String partenza) {
this.partenza = partenza;
}
public String getDestinazione() {
return destinazione;
}
public void setDestinazione(String destinazione) {
this.destinazione = destinazione;
}
public String getModalita() {
return modalita;
}
public void setModalita(String modalita) {
this.modalita = modalita;
}
public Taxi getTaxi() {
return taxi;
}
public void setTaxi(Taxi taxi) {
this.taxi = taxi;
}
}
E la classe Percorso
codice:
package model;
import main.Constants;
public class Percorso {
int[] percorso;
float costo;
float tempo;
float distanza;
public Percorso(int[] percorso){
this.percorso=percorso;
}
@Override
public String toString(){
String s="";
for (int i=0;i<percorso.length;i++){
s+=Constants.citta[percorso[i]]+"-";
}
s=s.substring(0,s.length()-1);
return s;
}
public float getCosto() {
return costo;
}
public void setCosto(float costo) {
this.costo = costo;
}
public float getTempo() {
return tempo;
}
public void setTempo(float tempo) {
this.tempo = tempo;
}
public float getDistanza() {
return distanza;
}
public void setDistanza(float distanza) {
this.distanza = distanza;
}
}
E anche ReservationController
codice:
package controller;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import model.Reservation;
public class ReservationController {
private static final String progettoDirPath = "database";
private static final String reservationFilePath = progettoDirPath+File.separator+"prenotazioni.txt";
File reservationFile;
private static ReservationController instance = null;
public static synchronized ReservationController getInstance() {
if (instance == null) {
instance = new ReservationController();
}
return instance;
}
public boolean checkPrenotazioniFile(){
reservationFile = new File(reservationFilePath);
boolean reservationFileOk = true;
if (!reservationFile.exists()){
try {
reservationFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
reservationFileOk = false;
return reservationFileOk;
}
}
return reservationFileOk;
}
public boolean addReservation(Reservation reservation){
boolean esito=true;
BufferedWriter output = null;
try {
output = new BufferedWriter(new FileWriter(reservationFilePath, true));
if(reservationFile.length()>0){
output.newLine();
}
output.write(reservation.getUser().getUsername()+";"+reservation.getPartenza()+";"+reservation.getDestinazione()+
";"+reservation.getPercorso().toString()+";"+reservation.getModalita()+";"+reservation.getPercorso().getDistanza()+
";"+reservation.getPercorso().getTempo()+";"+reservation.getPercorso().getCosto());
} catch (IOException e) {
esito = false;
e.printStackTrace();
} finally {
try {
output.close();
} catch (IOException e) {
esito = false;
e.printStackTrace();
}
}
return esito;
}
}