// vores main metode public static void main(String args[]) {
Kontrol kontrolklasse = new Kontrol(); Gui1 gui1 = new Gui1();
}
private int naesteMedlemsNr; // laver en variabel til at indeholde medlemsNR private HashMap medlemmer;
//Konstruktør - laver et hashmap og fylder data ind fra metoden loadfrafil public Kontrol() {
medlemmer = new HashMap(); loadFraFil();
}
//henter det næste nr fra en gemt fil private int HentNaesteMedlemsNr() { try {
BufferedReader hentMedlemsNrFraFil = new BufferedReader(new FileReader("C:\\MedlemsNr.dat")); String xNytMedlemsNr = hentMedlemsNrFraFil.readLine();
if(xNytMedlemsNr == "") // tjekker at medlemsfilen ikke er tom { naesteMedlemsNr = 1; } else { naesteMedlemsNr = Integer.parseInt(xNytMedlemsNr) + 1; } GemNaesteMedlemsNr(); return naesteMedlemsNr; } catch(IOException e) // Bliver kaldt hvis filen slet ikke findes { naesteMedlemsNr = 1; GemNaesteMedlemsNr(); return naesteMedlemsNr; }
}
// Gemmer næste medlems nr private void GemNaesteMedlemsNr() { try //bruger try fordi fileWriter smider IOExceptions { FileWriter fw = new FileWriter("C:\\MedlemsNr.dat"); BufferedWriter bw = new BufferedWriter(fw); PrintWriter gemPaaFil = new PrintWriter(bw); String NaesteMedlemsNrString = Integer.toString(naesteMedlemsNr); gemPaaFil.println(NaesteMedlemsNrString);
gemPaaFil.close(); } catch(IOException e) { }
}
// fra String til boolean private boolean stringToBoolean(String tekst) { Boolean temp = new Boolean(tekst); return temp.booleanValue();
}
// henter indhold af medlemmer filen ind public void loadFraFil() { try //bruger try fordi filreader smider IOExceptions { BufferedReader hentFraFil = new BufferedReader(new FileReader("C:\\Medlemmer.dat")); String nyLinje = hentFraFil.readLine(); String xMedlemsNr; String xNavn; String xAdresse; String xBy; String xxPostNr; String xxTelefonNr; String xCprNr; String xxAktivitetsForm; String xxMedlemsForm; int xPostNr; int xTelefonNr; boolean xAktivitetsForm; boolean xMedlemsForm;
while (nyLinje != null) { StringTokenizer tokenizer = new StringTokenizer(nyLinje, ",");
xMedlemsNr = tokenizer.nextToken(); xNavn = tokenizer.nextToken(); xAdresse = tokenizer.nextToken(); xBy = tokenizer.nextToken(); xxPostNr = tokenizer.nextToken(); xPostNr = Integer.parseInt(xxPostNr); // skifter fra string til int xxTelefonNr = tokenizer.nextToken(); xTelefonNr = Integer.parseInt(xxTelefonNr); // skifter fra string til int xCprNr = tokenizer.nextToken(); xxAktivitetsForm = tokenizer.nextToken(); xAktivitetsForm = stringToBoolean(xxAktivitetsForm); xxMedlemsForm = tokenizer.nextToken(); xMedlemsForm = stringToBoolean(xxMedlemsForm); //Skifter til boolean addEksisterendeMedlem(xMedlemsNr, xCprNr, xPostNr, xTelefonNr, xNavn, xAdresse, xBy, xAktivitetsForm, xMedlemsForm);
//Gemmer medlemmer der har været på filen i hashmap private void addEksisterendeMedlem(String medlemsNr, String cprNr, int postNr, int telefonNr, String navn, String adresse, String by, boolean aktivitetsForm, boolean medlemsForm) { if (medlemsForm == false) { Konkurrence nytMedlem = new Konkurrence(cprNr, postNr, telefonNr, navn, adresse, by, aktivitetsForm, medlemsForm); nytMedlem.setMedlemsNr(medlemsNr); medlemmer.put(medlemsNr, nytMedlem);
// tilføjer nyt medlem til HashMap public void addMedlem(String cprNr, int postNr, int telefonNr, String navn, String adresse, String by, boolean aktivitetsForm, boolean medlemsForm) { if(medlemsForm == false) // tjekker om det er et konkurrence medlem { Konkurrence nytMedlem = new Konkurrence(cprNr, postNr, telefonNr, navn, adresse, by, aktivitetsForm, medlemsForm); String medlemsNr = Integer.toString(HentNaesteMedlemsNr()); nytMedlem.setMedlemsNr(medlemsNr); medlemmer.put(medlemsNr, nytMedlem); } else { // ellers sætter den ny motionist Motionist nytMedlem = new Motionist(cprNr, postNr, telefonNr, navn, adresse, by, aktivitetsForm, medlemsForm); String medlemsNr = Integer.toString(HentNaesteMedlemsNr()); nytMedlem.setMedlemsNr(medlemsNr); medlemmer.put(medlemsNr, nytMedlem);
} }
// fjerner reference til medlem public void removeMedlem(String medlemsNr) { if(medlemmer.get(medlemsNr)!= null) // tjekker at pointer findes { medlemmer.remove(medlemsNr); // fjerner referrence til medlemsobjekt }
else { //ikke valid Medlemsnr og hashmap ville smidde en null pointer }
}
// udskriver alle på skærm public void listAll() { Iterator i = medlemmer.values().iterator(); // får en iterator der itererer over værdierne (Medlem) i hasmap medlemmer
while (i.hasNext()) // så længe variablen i har en mere skal den printe nedenstående { Medlem medlem = (Medlem) i.next(); System.out.println(medlem.getMedlemsNr()); System.out.println(medlem.getNavn()); System.out.println(medlem.getAdresse()); System.out.println(medlem.getPostNr()); System.out.println(medlem.getBy()); System.out.println(medlem.getTelefonNr());
if(medlem.getMedlemsForm() == false) // tjekker om medlemsform er false så skal den printe konkurrence { System.out.println("Konkurrence"); } else { System.out.println("Motionist"); // ellers motionist }
//bruges til redigering af et medlem public void redigerMedlem(String medlemsNr, String cprNr, int postNr, int telefonNr, String navn, String adresse, String by, boolean aktivitetsForm, boolean medlemsForm) { if((medlemsNr)!=null) // hvis key findes skal den caste hashmap til et medlem og derefter kalder den setOplysninger i medlem //og sætter de nye værdier ind { Medlem medlem = (Medlem) medlemmer.get(medlemsNr); medlem.setOplysninger(cprNr, postNr, telefonNr, navn, adresse, by, aktivitetsForm, medlemsForm);
} else { // ikke valid indtastning - til exepstions - hashMap ville i så fald smide en null pointer } }
//viser et medlem søger i hashmap via medlemsNR public void visEtMedlem(String medlemsNr) { if((Medlem)medlemmer.get(medlemsNr)!= null) // hvis medlem findes skal den caste til medlem og gette information på medlem { Medlem temp = (Medlem) medlemmer.get(medlemsNr); System.out.println(temp.getMedlemsNr()); System.out.println(temp.getNavn()); System.out.println(temp.getAdresse()); System.out.println(temp.getPostNr()); System.out.println(temp.getBy()); System.out.println(temp.getTelefonNr()); if(temp.getMedlemsForm() == false) // Tjekker om det er konkurrence medlem { System.out.println("Konkurrence"); } else { System.out.println("Motionist"); // printer hvis det er motionist }
} else { // ikke valid nr - til exepstions - hashMap ville smide en null pointer } }
// gemmer på fil public void savePaaFil() { try // bruger try fordi fileWriter smider IOExceptions { FileWriter fw = new FileWriter("C:\\Medlemmer.dat"); BufferedWriter bw = new BufferedWriter(fw); PrintWriter gemPaaFil = new PrintWriter(bw);
Iterator i = medlemmer.values().iterator(); String medlemsStreng = new String();
Det er i forbindelse med at et nyt medlem skal oprettes, så er der i gui'en følgende jtextfields som der indtastes i : Cpr-nr, navn, adresse, Post-nr, By, Telefon nr. ligeledes findes der et sæt JRadioButtons for aktiv/pasiv og et sæt for Motionist/Konkurrence.
Iden er at der indtastes data og makeres i de 2 sæt JradioButtons, når dette er sket afsluttes det ved tryk på en Jbutton (Gem)
Når der trykkes på knappen skal oplysningerne gemmes i Det hasMap der ligger i Kontrol klassen
Jeg har ikke kiget igenom all din kod (jeg er lat, det er for meget) men hvis du skaber objeketerna her: Kontrol kontrolklasse = new Kontrol(); Gui1 gui1 = new Gui1();
så kænner de ikke hvorandra, og kan ikke samarbeta.
Hvis du i klassen gui skapar en "member-variable": Map _map; og en metode: public void setMap(Map map) { _map = map; }
så kan du efter dine koder: Kontrol kontrolklasse = new Kontrol(); Gui1 gui1 = new Gui1(); kalde: gui1.setMap(kontrolklasse.getMap()); //getMap() som jeg skrev ovan
eftersom Java arbejder med referenser kommer de att ha links til samme Map.
då kan du på din Gem-knapp bruge:
JButton gem = new JButton(); gem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { if(_map != null) _map.put(<key>, createObject()); } });
private Object createObject() { // byg op det objekt som skall in i din HashMap }
Ja den var ikke så dårlig, jeg skulle lige lave et par små ændringer, så virkede det :O)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.