static & non-static

mr_xxl

Grünschnabel
Hallo zusammen,

ich habe eine ComboBox mit drei Auswahlmöglichkeiten. Dazu habe ich actonListner gemacht, der den Index uberwacht. Nun will ich diesen Index für die Berechnung in einer statischen Methode verwenden, bis jetzt habe ich es nicht hingekriegt. Habt ihr vielleicht irgendwo ein Beispiel gesehen wie man es richtig macht?
 
Um ehrlich zu sein, verstehe ich die Sachlage nicht mal wirklich. Versuchs mal anders zu erklären oder poste den Code, um den es geht, vielleicht wird dann ein Schuh draus ^^
 
willst du die statische Methode bei Änderung des Indizes ausführen, sprich wenn der ActionListener ausgeführt, oder wird sie dauerhaft ausgeführt?
Aus deinem Text vermute ich eher ersteres, bin mir aber nicht ganz sicher, auf jeden Fall gäbe es dafür eine sehr simple Möglichkeit: Parameter.
Ein gekürztes Beispiel:

Java:
public static void eineStatischeFunktion(int index) {
  //tu irgendwas mit dem index, z.B. ausgeben
  System.out.println("" + index);
}

// alles mögliche an Code

//irgendeine Funktion
  jcombobox.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
      eineStatischeFunktion(jcombobox.getSelectedIndex();
    }
  });

So ungefähr könnte das aussehen, kann sein das da noch syntaktische Fehler drin sind, habs jetzt von Hand geschrieben.

Gruß Matt
 
Danke für den Code, das ist fast genau was ich brauche. Ich will den Index zurück geben: in deinem Code habe public static eineStatischeFunktion Methode gemacht und es geht nicht. Bei mir sollen je nach Index unterschiedliche Berechnungen ausgeführt werden. Ich habe eine Methode mit if-Anweisung wo als Bedingung Index ist.
 
Hallo,
Deine ComboBox ist doch bestimt ein Object, dh eine Instanz einer Klasse. Und wenn Du dann mit einer statischen Methode darauf zugreifen willst, hast Du keine Chancen, denn die statischen Methoden kennen nur die Klassen, nicht aber die Instanz-Variablen.
Ich hoffe, der Tipp hilft Dir.
 
Dann gib der statischen Funktion doch einfach einen Rückgabewert, also z.B.:

Java:
public static int eineStatischeFunktion(int index) {
  switch (index) {
    case 0:
      return 5; //einfach irgendeine zahl, hier muss deine index-abhängige berechnung stattfinden
      break; //der vollständigkeit halber
    case 1:
      return 2; //s.o.
      break; //s.o.
    //das kann hier endlos so weitergehen
  }
}

Warum muss es denn eigentlich eine statische Funktion sein? Greifst du aus mehreren verschiedenen Klassen darauf zu? Ansonsten bau doch einfach eine nicht-statische Funktion in der Klasse in der der ActionListener implementiert wird. Die kann genauso aufgebaut sein, also mit Parameter und Rückgabewert...

Gruß
Matt
 
ok ich lasse es mit static sein, was auch logisch ist, aber wie kann ich dann die folgende Methode in statische Methode ausgeben oder besser gesagt ich brauche ergebnis. Die methode sieht so aus:
Code:
public double [] Do()throws IOException{
        int length =87;
        double ergebnis[]=new double[length];
         double a[]=new double[length];
          int index=VersuchView.Wert();
        double [][] werte = Daten ();

   if(index==0){
         for ( int i=0;i <length;i++){
          a[i]=Berechnung1
         }
   }

    if(index==1){
          for ( int i=0;i <length;i++){
          a[i]=Berchnung2; 
          }
    }

    if(index==2){
         for ( int i=0;i <length;i++){
        a[i]=Berechnung3;
     }
  }
          
   for ( int i=0;i <length;i++){
             double b = werte [6][i];
             double c= werte[7][i];
             
ergebnis[i]=a[i]+b+c;
    }
   return ergebnis;
 }

Habe auch die beispiele wo die non-static Methodeausgeben()einen Namen ausgeben soll und in main wird dem Namen z.B. Wolf diese Methode angehängt.
Code:
Wolf.ausgeben();
wie kann ich hie diese Methode ausführen?
 
Zurück