# Inhalt einer Combobox dynamisch erstellen?



## Twissty (19. Nov 2007)

Guten Morgen Zusammen,
wollte mal fragen ob und bzw. wie es möglich ist verschiedene Variabelen zu einem Array zusammen zufassen, sodass ich diese in einer Combobox ausgeben kann.
Ich habe verschiedene Variabeln, die sich bei jedem Start des Programmes ändern. Diese möchte ich in einer Combobox ausgeben.

Kann ich eine Methode erstellen, die erst den String für die Combobox erstellt und dannach erst die Grafische Oberfläche.

Gruß Twissty.


----------



## Kaladial (19. Nov 2007)

ja


----------



## The_S (19. Nov 2007)

äh ja. natürlich. Poste doch mal Code, wie du es momentan hast.


----------



## Twissty (19. Nov 2007)

Die Variabeln lese ich aus einer IniDatei aus, die so aussieht:

Firma1000 C:\temp\test\1
Firma1001 C:\temp\test\2

Der ProgrammCode Sieht so aus:


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class combobox extends JFrame {
  // Anfang Variablen
  private JPanel jPanel1 = new JPanel(null);
  private String[] jComboBox1Daten = {""};
  private JComboBox jComboBox1 = new JComboBox(jComboBox1Daten);
  // Ende Variablen
  public zuerst();
  {
    LineNumberReader f;
    String line;
    int positionX = 0, i=0;
    String ww=""; xx="", yy="", zz="";

    int[] ausgeleseneWerte = new int[30];
    try
    {
       f = new LineNumberReader(
           new FileReader("test.ini"));
       while ((line = f.readLine()) != null )
       {
           //zz=f.getLineNumber();
           StringTokenizer st = new StringTokenizer(line);
           while (st.hasMoreTokens())
           {
               i=i+1;
               if (i==1)
               {
                  ww=st.nextToken();
               }
               if (i==2)
               {
                  xx=st.nextToken();
               }
               if (i==3)
               {
                 yy=st.nextToken();
               }
               if (i==4)
               {
                 zz=st.nextToken();
               }
           }
       }
       f.close();
     }
    this.jComboBox1Daten = {xx, zz};
  }
  public combobox(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2 ;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    jPanel1.setBounds(8, 8, 273, 249);
    cp.add(jPanel1);
    jComboBox1.setBounds(16, 72, 121, 24);
    jPanel1.add(jComboBox1);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  public static void main(String[] args) {
    new combobox("combobox");
  }
}
```


Gruß Twissty



_L-ectron-X hat diesen Beitrag am 19.11.2007 um 16:04 editiert._
_Code-Tags eingefügt._


----------



## The_S (20. Nov 2007)

1.) Klassennamen schreibt man groß
2.) Man sollte nur ein null-Layout verwenden, wenn man sich absolut sicher ist, was man da tut
3.) Und wo ist jetzt das Problem die Daten in ein Array zu speichern? Ich würde aber lieber erstmal alles in eine Collection oder ähnlichem schreiben, da du am Anfang vermutlich nicht weißt, wie viele Datensätze dabei rauskommen.


----------



## Twissty (20. Nov 2007)

Das Problem liegt daran, dass ich beim kompilieren 3 Fehler bekomme:


combobox.java:13:10: invalid method declaration; return type required
  public Zuerst();
         ^
combobox.java:18:24: ';' expected
    String ww=""; xx="", yy="", zz="";
                       ^
combobox.java:56:28: illegal start of expression
    this.jComboBox1Daten = {test, zz};
                           ^
3 errors


Ich wundere mich, warum ein Fehler bei der Zuerst Methode kommt.

Wäre nett wenn du mir bisl schildern könntest, an was diese fehler leiegn

Gruß Twissty.


----------



## The_S (20. Nov 2007)

public zuerst weißt auf einen Konstruktor hin, der genauso heißen muss wie die Klasse. Tut er aber nicht. Wenn es der Konstruktor sein soll => genauso bennen wie die Klasse. Wenn es eine Methode sein soll => public void zuerst.

Aus String ww=""; xx="", yy="", zz=""; muss String ww="", xx="", yy="", zz=""; werden

nach einem try muss auch ein catch folgen.


----------



## Twissty (20. Nov 2007)

Erst mal danke, 
meistens sind es die dümmsten Fehler die man selbst einbaut aber nicht sieht wie anstat ein , eine ;.
Doch wäre es noch gut wenn du wissen würdest, ob ich ohne weiters zwei meiner Variabeln in den String jComboBox1Daten einbauen kann. Da kommt nämlich auch ein Fehler.
Das Ziel wäre das der String am schluss aus den daten der beiden Variabeln besteht, sodass ich diese dan aus der Drop down liste auswählen kann.

Gruß Twissty


----------



## The_S (20. Nov 2007)

Ja natürlich geht das. Was kommt denn für ein Fehler? Am besten postest du passend dazu auch nochmal deinen aktuellen Code.


----------



## Twissty (20. Nov 2007)

Hier der aktuelle Program Code:


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class combobox extends JFrame {
  // Anfang Variablen
  private JPanel jPanel1 = new JPanel(null);
  private String[] jComboBox1Daten={};
  private JComboBox jComboBox1 = new JComboBox(jComboBox1Daten);

  // Ende Variablen
  public void Zuerst();
  {
    LineNumberReader f;
    String line;
    int positionX = 0, i=0;
    String ww="", xx="", yy="", zz="";

    int[] ausgeleseneWerte = new int[30];
    try
    {
       f = new LineNumberReader(
           new FileReader("test.ini"));
       while ((line = f.readLine()) != null )
       {
           //zz=f.getLineNumber();
           StringTokenizer st = new StringTokenizer(line);
           while (st.hasMoreTokens())
           {
               i=i+1;
               if (i==1)
               {
                  ww=st.nextToken();
               }
               if (i==2)
               {
                  xx=st.nextToken();
               }
               if (i==3)
               {
                 yy=st.nextToken();
               }
               if (i==4)
               {
                 zz=st.nextToken();
               }
           }
       }
       f.close();
     }
     catch (IOException e)
     {

     }
    this.jComboBox1Daten = {xx, zz};
  }
  public combobox(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2 ;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    jPanel1.setBounds(8, 8, 273, 249);
    cp.add(jPanel1);
    jComboBox1.setBounds(16, 72, 121, 24);
    jPanel1.add(jComboBox1);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  public static void main(String[] args) {
    new combobox("combobox");
  }
}
```
Beim kompilieren kommt folgender Fehler:

combobox.java:56:28: illegal start of expression
    this.jComboBox1Daten = {xx, zz};
                           ^
1 error


Gruß Twissty


----------



## The_S (20. Nov 2007)

Aus 
	
	
	
	





```
this.jComboBox1Daten = {xx, zz};
```
 wird 
	
	
	
	





```
this.jComboBox1Daten = new String[] {xx, zz};
```

Um deine nächste Fehlermeldung zu vermeiden solltest du aus 
	
	
	
	





```
public void Zuerst();
  {
```


```
public void Zuerst()
  {
```
 machen.

Nachwie vor werden Klassennamen groß und Methodennamen klein geschrieben.

Außerdem ist dir bewusst, dass du "Zuerst()" nie aufrufst!?


----------



## Twissty (20. Nov 2007)

Erst mal danke für die Hilfe!
Das ich zuerst nie aufrufe, ist mir auch eben aufgefallen.
Kannst du mir eventuell einen TIpp geben wie Zuerst tatsächlich zuerst ausgeführt wird?

Gruß Twissty


----------



## Twissty (20. Nov 2007)

Habe schon folgendes Versucht:


```
public static void main(String[] args) {
    Combobox2 b = new Combobox2();
    b.Zuerst();
    new Combobox2("Combobox2");
  }
```

Aber leider ohne erfolg.
Beim kopilieren kommt dann folgende Fehler Meldung:

Combobox2.java:98:19: cannot find symbol
symbol  : constructor Combobox2()
location: class Combobox2
    Combobox2 b = new Combobox2();
                  ^
Gruß Twissty


----------



## The_S (20. Nov 2007)

Im Konstruktor einfach


```
Zuerst();
```

aufrufen. Bevor du hier weiter Fragen stellst, halte ich es für sinnvoll, dass du dir erstmal die Basics aneignest/diese nochmal vertiefst. Sonst kommen wir hier nicht wirklich weiter!


----------

