JComboBox wird nicht gefüllt

Tinipieps

Mitglied
Hallo!
Aus irgendeinem Grund, wird meine JComboBox im Adressbuch nicht gefüllt.
Finde keinen Fehler.

Code:
package client;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;

import adresses.Adresses;

/**
 * @author Stepanski
 *
 */
public class Adressbuch {
	
	static JComboBox cb1;
	
	
	/*
	* Methoden, um Adressbuch-Auswahl zu erstellen
	*/
	/**
	 *  Diese Methode fuellt die JComboBox, welche im Auswahl-Dialog 
	 *  eingebettet wird
	 */
	public static void fillAdressCombo(){
		
		String[] adressen = Adresses.getServerKeys();
		Arrays.sort(adressen);
		for (String i:adressen) {
			System.out.println(i);
			cb1 = new JComboBox();
			cb1.addItem(i);
		}
		System.out.println("ComboBox wurde gefüllt.");
	}
		
	/**
	 * Diese Methode erzeugt einen Dialog, indem man die 
	 * Empfänger-Adresse auswählen kann.
	 */
	public static void createAdressbuchAuswahl(){
		
		final JDialog adressbuch = new JDialog();
		adressbuch.setSize(600,200);
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		int x = ((int)dim.getWidth()-400)/2;
		int y = ((int)dim.getHeight()-300)/2;
		adressbuch.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		adressbuch.setLocation(x, y);
		adressbuch.setVisible(true);
				        
		GridBagLayout gbl = new GridBagLayout();
		adressbuch.setLayout(gbl);
		GridBagConstraints constraints = new GridBagConstraints();
		
        ////////////////////////////////////////////////////////////
        // ComboBox mit Adressen aufrufen
		cb1 =new JComboBox();
		constraints.gridx=0;
		constraints.gridy=1;
		constraints.gridwidth=2;
		constraints.gridheight=1;
		constraints.insets = new Insets(20,20,20,20);
		adressbuch.add(cb1, constraints);
				
        fillAdressCombo();
        
        ////////////////////////////////////////////////////////////
        // Button erstellen
        JButton empfaenger = new JButton("Empfänger >");
        constraints.gridx = 4;
        constraints.gridy=0;
		constraints.insets = new Insets(5,5,5,5);
		adressbuch.add(empfaenger, constraints);
		
		empfaenger.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Client.getTfempf().setText(cb1.getSelectedItem().
						toString());				
			}			
			
		});
		
        JButton kopie = new JButton("Kopie >");
        constraints.gridy=1;
        constraints.fill = GridBagConstraints.HORIZONTAL;
		adressbuch.add(kopie, constraints);
		
		kopie.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Client.getTfcc().setText(cb1.getSelectedItem().
						toString());				
			}			
			
		});
		
		JButton blindkopie = new JButton("Blindkopie >");
	    constraints.gridy=2;
	    constraints.fill = GridBagConstraints.NONE;
		adressbuch.add(blindkopie, constraints);
		
		blindkopie.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Client.getTfbcc().setText(cb1.getSelectedItem().
						toString());				
			}			
			
		});
		 
		JButton schliessen = new JButton("Fenster schließen");
		constraints.gridx = 6;
        constraints.gridy=3;
		constraints.gridwidth=2;
		constraints.gridheight=1;
		constraints.anchor = GridBagConstraints.PAGE_END;
		adressbuch.add(schliessen, constraints);
		
		schliessen.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				adressbuch.setVisible(false);
				
			}
			
		});	
		
		adressbuch.pack();
	}
}

Code:
package adresses;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Properties;

import application.Application;

/**
 * Diese Klasse enthaelt alle Methoden, um das Adressbuch 
 * zu verwalten
 * @author Stepanski
 *
 */
public class Adresses {
	
	/**
	 * Diese Methode liest Schlüssel und Werte der Datei aus 
	 * und schreibt diese dann in eine HashMap
	 * @return  HashMap adressMap
	 */
	public static HashMap<String,String> getAdressen() {
		
		//HashMap anlegen
		HashMap<String,String> adressMap=new HashMap<String, String>();
		//Konfigurationsdatei wird eingelesen
		InputStream is;
		try {
			// Datei auslesen
			is=new FileInputStream(new File(
					Application.path + "Adressbuch.ini"));
			Properties prop=new Properties();
			prop.load(is);
			
			// String[] anlegen, in dem die Keys stehen
			String[]keys=new String[prop.size()];
			prop.keySet().toArray(keys);
			
			for (String s:keys) {
				// damit Release aus Konfig-Datei nicht ausgelesen wird
				if( !s.startsWith("Editierbar"))
				adressMap.put(s,prop.getProperty(s));
			}			
			
			is.close();
			
		}catch(Exception e) {
			e.printStackTrace();
		}
		System.out.println("Liste der moeglichen Empfaenger wurde angelegt.");
		
		return adressMap;	
	}
	
	/**
	 * Lesen der Keys der HashMap und uebertragen in ein String[]
	 * @return Liste der Keys [0, 1, ...]
	 */
	public static String[] getServerKeys() {
		HashMap<String, String> auswahlListe = getAdressen();
		String[]auswahl=new String[auswahlListe.size()];
		auswahlListe.keySet().toArray(auswahl);
		return auswahl;
	}

Code:
#Adressbuch.ini
#Konfigurationen der moeglichen Adressen
#Stepanski Tue Apr 13 2010

#festlegen, ob Texteingabe durch Nutzer erlaubt
Editierbar:nein

#Empfaengeradressen
Person1@blabla.org
Person2@blabla.org

Ausgabe in Konsole:
Liste der moeglichen Empfaenger wurde angelegt.
Person1@blabla.org
Person2@blabla.org
ComboBox wurde gefüllt.
 
Kannst du nicht bei einem Thread bleiben? So wie ich das sehe (und das war nur die erste Methode) erzeugst du bei jedem Schleifendurchlauf eine neue ComboBox und weißt ihm das nächste Item aus dem Array zu.
 
Moin,

da kann und muss ich Kai mit beiden Bemerkungen Recht geben :p

Richtig wäre also sowas :
Code:
static JComboBox cb1 = new JComboBox();
...
for (String i:adressen) 
{
    System.out.println(i);
    cb1.addItem(i);
}

Gruß
Klaus
 
Oh mein Gott, wenn man dann die Antwort liest, ist es ja schon fast peinlich, dass einem das nicht selbst aufgefallen ist!

Vielen Dank
 
Zurück