Avatar billede retep Nybegynder
03. juni 2003 - 21:28 Der er 7 kommentarer og
1 løsning

Spørgsmål til scope af variable.

Lige et nybegynder spg. til Java...

Jeg har 2 klasser med forms i øverste lag af mit program.

i min main opretter jeg et objekt fra en klasse i mit funktionslag:

kundeContainer kunder = new kundeContainer();

I den anden GUI klasse vil jeg så gerne kalde nogle funktioner på main udfra hvad brugeren taster i formen, men variablen 'kunder' er ukendt for den klasse... Hvordan får jeg fat i den? (skal bruge den i en event-handler) 

Håber I forstår mit spg.

Mvh
Retep
Avatar billede riversen Nybegynder
03. juni 2003 - 21:30 #1
det gør jeg ikke. Kan man få noget kode. evt. på mail hvis det fylder for meget...se min info
Avatar billede arne_v Ekspert
03. juni 2003 - 21:33 #2
Jeg er nu helel rikke sikker på at jeg forstår problemet.

Men et gæt vil være at du skal sende kunder med over som argument
i GUI klassens constructor og gemme en referance til den og så kan
de øvrige metoder i GUI klassende bruge objektet.
Avatar billede retep Nybegynder
03. juni 2003 - 21:44 #3
Ok jeg prøver med noget kode :)

I min MainForm har jeg:

public static void main(String[] args) {

System.out.println("It's alive, Betty!");

kundeContainer kunder = new kundeContainer();

MainForm mainForm = new MainForm();
mainForm.setSize(400,70);
mainForm.show();
}

Jeg opretter kunder her fordi jeg gerne vil tilgå det samme objekt fra flere klasser.

I en anden klasse/fil/skærm/form (er ikke så sej til java-terminologi endnu *GG*), har jeg :

En række inputfelter og en eventhandler på en knap der ser sådan ud:

private class knaptrykEvent implements ActionListener {
        private JFrame opretKundeGUI;

        knaptrykEvent(JFrame opretKundeGUI) {
            this.opretKundeGUI = opretKundeGUI;
        }

        public void actionPerformed(ActionEvent e) {
           
            System.out.println("Opret knap trykket");
           
            kunder.createKunde("Peter","test");
            System.out.println(kunder.antalKunder());
           
    }
}

Men jeg kan ikke kalde funktioner på kunder da den ikke kendes. Så spg. er hvordan kan jeg gøre den global?

("Peter" og "test" skal udskiftes med indholdet fra nogle textfelter, men hvordan jeg får dem ud har jeg heller ikke fundet ud af endnu, så der kommer nok snart et spg. mere)
Avatar billede arne_v Ekspert
03. juni 2003 - 21:46 #4
public static void main(String[] args) {

System.out.println("It's alive, Betty!");

kundeContainer kunder = new kundeContainer();

MainForm mainForm = new MainForm(kunder);
mainForm.setSize(400,70);
mainForm.show();
}
Avatar billede arne_v Ekspert
03. juni 2003 - 21:46 #5
og

public class MainForm {
  private kundeContainer kunder;
  public MainForm(kundeContainer kunder) {
      this.kunder = kunder;
  }
...
Avatar billede arne_v Ekspert
03. juni 2003 - 21:47 #6
så kan du bruge kunder i alle MainForm's metoder.
Avatar billede retep Nybegynder
03. juni 2003 - 21:52 #7
Hmmm... Kan godt følge din idé... Prøver lige om jeg kan få det til at virke :)

Tak indtil videre !
Avatar billede retep Nybegynder
03. juni 2003 - 22:04 #8
Fedt, det virkede... Tusind tak :)
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