Hallo!
Aus irgendeinem Grund, wird meine JComboBox im Adressbuch nicht gefüllt.
Finde keinen Fehler.
Ausgabe in Konsole:
Liste der moeglichen Empfaenger wurde angelegt.
Person1@blabla.org
Person2@blabla.org
ComboBox wurde gefüllt.
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.