Avatar billede hans1001 Nybegynder
17. december 2003 - 14:41 Der er 8 kommentarer og
1 løsning

Oplysninger fra GUI til hasMap

Hejsa
Jeg har nogle JTextFields hvor man kan indtaste "string" og "int" oplysninger.

Hvordan får jeg disse oplysninger lagt ind i mit hasMap?

hvordan vil en general opstilling se ud?

Gui ligger i en klasse og hasMap er i en anden klasse Kontrol
Avatar billede di8leva Nybegynder
17. december 2003 - 14:46 #1
ikke meget information man kan bruge her =)

mit forslag er:

public class Kontrol
{
    Map _map = new HashMap();
   
    public Map getMap() { return _map; }
}

public class GUI
{
    Kontrol _kontrol = new Kontrol();
    JTextField _field = new JTextField();
   
    public GUI()
    {
        _field.addAListener(new Listener()
        {
            public void somethingHasHappened()
            {
                _kontrol.getMap().put(onething, anotherthing);
            }
        });
    }
}
Avatar billede hans1001 Nybegynder
17. december 2003 - 15:02 #2
Hvad vil du gerne vide mere om? jig er lidt i twivl om hvad jeg skal oplyse om for at gøre det nemest muligt at forstå hvad jeg gerne vil have

her er koden på min kontrol klasse

import java.util.*;
import java.io.*;
import javax.swing.*;



/*
  * Created on 8 December 2003, 11:46
*/

public class Kontrol
{

    // 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);
               
                nyLinje = hentFraFil.readLine();
            }
        }
        catch(IOException e)
        {
        }
  }



    //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);
           
        }
        else
        {
            Motionist nytMedlem = new Motionist(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
            }
           
            if(medlem.getAktivitetsForm() == false) // tjekker aktivitetsform
            {
                System.out.println("Passiv");
            }
            else
            {
                System.out.println("Aktiv");
            }
        }   
       
       
    }


        //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();
       
            while (i.hasNext())
            {
                Medlem medlem = (Medlem) i.next();
                medlemsStreng = medlem.getMedlemsNr();
                medlemsStreng = medlemsStreng + "," + medlem.getNavn();
                medlemsStreng = medlemsStreng + "," + medlem.getAdresse();
                medlemsStreng = medlemsStreng + "," + medlem.getBy();
                medlemsStreng = medlemsStreng + "," + Integer.toString(medlem.getPostNr());
                medlemsStreng = medlemsStreng + "," + Integer.toString(medlem.getTelefonNr());
                medlemsStreng = medlemsStreng + "," + medlem.getCprNr();
                medlemsStreng = medlemsStreng + "," + Boolean.toString(medlem.getAktivitetsForm());
                medlemsStreng = medlemsStreng + "," + Boolean.toString(medlem.getMedlemsForm());
               
                gemPaaFil.println(medlemsStreng);
           
            } 
       
        gemPaaFil.close();
        }
        catch(IOException e)
        {
        }
    }
}
Avatar billede di8leva Nybegynder
17. december 2003 - 15:19 #3
ok... fint at starte med.. så hvad er det nu du vill opnå? På vilken måde vil du at en HashMap skal tilknyttes et JTextField (og hvorfor)
Avatar billede hans1001 Nybegynder
17. december 2003 - 15:33 #4
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
Avatar billede di8leva Nybegynder
17. december 2003 - 16:02 #5
Ok, I see

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
}


*phew*

=)
Avatar billede hans1001 Nybegynder
17. december 2003 - 16:09 #6
OK det prøver jeg tak for hjælpen
Avatar billede hans1001 Nybegynder
17. december 2003 - 16:11 #7
Hmm...du fik da vist ikke dine points ?? hvis ikke så læg lige et svar så du kan få dem.
Avatar billede di8leva Nybegynder
17. december 2003 - 16:36 #8
Jeg har fåt mine points. Virker koden godt?
Avatar billede hans1001 Nybegynder
17. december 2003 - 17:55 #9
Ja den var ikke så dårlig, jeg skulle lige lave et par små ændringer, så virkede det :O)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB