# Array Werte einer JComboBox hinterlegen



## roniX (9. Jun 2005)

Guten Tag

Ich habe  versucht einer JComboBox Array Werte zu hinterlegen. Die Array Werte Zuordnung wird in einer andere Klasse vorgenommen. Der Code sieht so aus.


```
// Klasse Schueler

class Schueler {
  String Name;
  String Vorname;
  String dieserschueler;
  int SchuelerNummer;
  Schueler (String Name, String Vorname, int SchuelerNummer) {
    this.Name = Name;
    this.Vorname = Vorname;
    this.SchuelerNummer = SchuelerNummer;
  }
  void schuelerausgabe() {
    dieserschueler = ("" + Name + " " + Vorname);
  }
}
```


```
------------codeschnippsel (Haupt-Klasse)----------------------------------
    schuelerauswahl = new JComboBox(schuelerindex);
    schuelerauswahl.addActionListener(this);
    schuelerauswahl.setSelectedIndex(0);
    schuelerauswahl.setBounds(200,300,200,20);
    add(schuelerauswahl);

    Schueler schuelerx [] = new Schueler[3];
    schuelerx[0] = new Schueler ("Meier",   "Karl",    100);
    schuelerx[1] = new Schueler ("Huber",   "Manfred", 101);
    schuelerx[2] = new Schueler ("Schmidt", "Egon",    102);

    for (int iy = 0; iy < schuelerx.length; iy++) {

       schuelerindex[iy] = schuelerx[iy].schuelerausgabe();
    }
------------codeschnippsel----------------------------------
```

------------fehler--------------------------------------------
Jetzt kommt aber immer der Fehler:
incompatible types
found: void
required: java.lang.String
   schuelerindex[iy] = schuelerx[iy].schuelerausgabe();
------------fehler--------------------------------------------

schuelerindex[iy] = schuelerx[iy].schuelerausgabe();

Damit möchte ich die void Funktion aufrufen, in der "dieserschueler = ("" + Name + " " + Vorname);" festgelegt wird. Alle Schüler sollten nachher über die ComboBox aufgerufen werden können.

Was mache ich falsch? 

Oder kennt jemand eine andere Möglichkeit wie ich in einer class die Schüler definieren und sie dann in einer anderen class in einer JComboBox aufrufen kann?

Mit freundlichen Grüssen
roniX


----------



## Wildcard (9. Jun 2005)

```
String schuelerausgabe() {
    return dieserschueler = ("" + Name + " " + Vorname);
  }
```
Variablen und Methoden klein schreiben, Kamelschreibweise beachten.


----------



## roniX (9. Jun 2005)

Es funktioniert immer noch nicht. Ich poste mal den ganzen Code.

Gibt es denn keine einfachere Möglichkeit um in einer Klasse Werte zu definieren und diese dann in einer anderen Klasse wieder abzurufen?

Wäre wirklich dankbar für ein paar Tips/Beispiele


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Schueler {
  String Name;
  String Vorname;
  String dieserschueler;
  int SchuelerNummer;
  Schueler (String Name, String Vorname, int SchuelerNummer) {
    this.Name = Name;
    this.Vorname = Vorname;
    this.SchuelerNummer = SchuelerNummer;
  }
  String schuelerausgabe() {
    return (this.Name + " " + this.Vorname);
  }


}

public class Notendurchschnitt extends JPanel implements ActionListener
{
  private JComboBox bgauswahl;
  private JComboBox schuelerauswahl;
  private String[] items = {"grau", "gelb", "grün"};
  private Color[] colors = {Color.lightGray, Color.yellow, Color.green};
  private String[] schuelerindex;

  private JFrame owner;
  private JTextArea eingabe;
  private JTextArea ausgabe;

  int anz = 0;
  TextField[] tfeld = new TextField[10];
  
  public static void main(String[] args)
  {

    
    JFrame frame = new JFrame("Dialog-Test");
    frame.getContentPane().add(new Notendurchschnitt(frame));
    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

    frame.addWindowListener
    (
     new WindowAdapter()
      {
        public void windowClosing(WindowEvent event)
        {
          System.exit(0);
        }
      }
    );
    frame.pack();
    frame.setSize(500,500);
    frame.setVisible(true);
  }

  public Notendurchschnitt(JFrame owner)
  {
    setBackground(Color.lightGray);
    setLayout(null);
    
    this.owner = owner;
    
    eingabe = new JTextArea(20, 10);
    eingabe.setEditable(true);
    ausgabe = new JTextArea(30, 20);
    ausgabe.setEditable(false);

    //String sd = JOptionPane.showInputDialog(owner,"Geben Sie die Anzahl Noten ein","Eingabe",JOptionPane.QUESTION_MESSAGE);
    String sd = JOptionPane.showInputDialog("Geben Sie die Anzahl Noten ein (max 10)");
    //JOptionPane.showMessageDialog(owner,s,"Mitteilung",JOptionPane.INFORMATION_MESSAGE);


    Integer tempInt = new Integer(sd);
    anz = tempInt.intValue();
    
    for(int ix=0;ix<anz;ix++)
    {
     tfeld[ix] = new TextField("1", 10);
     tfeld[ix].addActionListener(this);
     tfeld[ix].setBounds(30,200+(ix*30),100,20);
     add(tfeld[ix]);
    }

    JLabel input = new JLabel ("Anzahl der Gäste auf der Party:", JLabel.LEFT);
    input.setBounds(30,50,100,20);
    add(input);
    eingabe.setBounds(140,50,50,20);
    add(eingabe);
  
    JLabel output1 = new JLabel ("Es erklingen ", JLabel.LEFT);
    output1.setBounds(30,100,100,20);
    add(output1);
    ausgabe.setBounds(140,100,50,20);
    add(ausgabe);

    JLabel output2 = new JLabel ("Gläser!", JLabel.LEFT);
    output2.setBounds(200,100,50,20);
    add(output2);

    JButton but_ausgabe = new JButton("Berechnen");
    but_ausgabe.addActionListener(this);
    but_ausgabe.setBounds(30,150,100,20);
    add(but_ausgabe);

    JButton but_Ende = new JButton("Ende");
    but_Ende.addActionListener(this);
    but_Ende.setBounds(200,200,100,20);
    add(but_Ende);

    bgauswahl = new JComboBox(items);
    bgauswahl.addActionListener(this);
    bgauswahl.setSelectedIndex(0);
    bgauswahl.setBounds(200,250,100,20);
    add(bgauswahl);

    schuelerauswahl = new JComboBox(schuelerindex);
    schuelerauswahl.addActionListener(this);
    schuelerauswahl.setSelectedIndex(0);
    schuelerauswahl.setBounds(200,300,200,20);
    add(schuelerauswahl);

    Schueler schuelerx [] = new Schueler[3];
    schuelerx[0] = new Schueler ("Meier",   "Karl",    100);
    schuelerx[1] = new Schueler ("Huber",   "Manfred", 101);
    schuelerx[2] = new Schueler ("Schmidt", "Egon",    102);

    for (int iy = 0; iy < schuelerx.length; iy++) {

       schuelerindex[iy] = schuelerx[iy].schuelerausgabe();
    }

   }
  
  public void actionPerformed(ActionEvent event)
  {
      String tempString = new String();
      int gaeste;
      double kombinationen = 0;
      double[] res = new double[10];
      String cmd = event.getActionCommand();

      int intcolor = bgauswahl.getSelectedIndex();
      setBackground(colors[intcolor]);

      if (cmd.equals("Berechnen"))
      {
        for(int ex=0;ex<anz;ex++)
        {
        Double tempDouble = new Double(tfeld[ex].getText());

        res[ex] = tempDouble.doubleValue();
        kombinationen = res[ex] + kombinationen;

        }
        kombinationen = kombinationen / anz;
        ausgabe.setText(tempString.valueOf(kombinationen));
       }
      else if (cmd.equals("Ende"))
      {
        setVisible(false);
        System.exit(0);
      }
  }
  
}
```

Mit freundlichen Grüssen
roniX


----------

