Hallo, liebe Forenmitglieder,
ich bin Java-Anfänger und habe ein Problem. Ich soll eine Art Personenkartei programmieren und dabei einer JComboBox Person-Objekte übergeben. In vier weiteren JLabel sollen die Angaben der in der ComboBox ausgewählten Person erscheinen. Ich muss dazu zwei Klassen "Kartei" und "Peron" erstellen. In der Klasse Kartei müssen der JComboBox zwingend Person-Objecte hinzugefügt werden. Als Eintrag für das Auswahlmenü soll jeweils der Zuname der Personen eingetragen werden. Wenn ich die Objekte zu der JCombobox hinzufüge erscheint in der Auswahlbox allerdings nur die Objekt-ID des Person-Objektes.
Die Auswahl des Eintrages für die JComboBox soll in der Klasse Person erfolgen. Ein Model, wie MutableComboboxModel darf ich nicht benutzen. Ich bekomme das einfach nicht hin. Kann mir jemand bitte weiterhelfen?
Viele Grüße
Chris
ich bin Java-Anfänger und habe ein Problem. Ich soll eine Art Personenkartei programmieren und dabei einer JComboBox Person-Objekte übergeben. In vier weiteren JLabel sollen die Angaben der in der ComboBox ausgewählten Person erscheinen. Ich muss dazu zwei Klassen "Kartei" und "Peron" erstellen. In der Klasse Kartei müssen der JComboBox zwingend Person-Objecte hinzugefügt werden. Als Eintrag für das Auswahlmenü soll jeweils der Zuname der Personen eingetragen werden. Wenn ich die Objekte zu der JCombobox hinzufüge erscheint in der Auswahlbox allerdings nur die Objekt-ID des Person-Objektes.
Die Auswahl des Eintrages für die JComboBox soll in der Klasse Person erfolgen. Ein Model, wie MutableComboboxModel darf ich nicht benutzen. Ich bekomme das einfach nicht hin. Kann mir jemand bitte weiterhelfen?
Viele Grüße
Chris
Java:
package gui.pers;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
public class Kartei extends JFrame implements ActionListener
{
/**
*
*/
private static final long serialVersionUID = -6219635382731794846L;
private static JComboBox<Person> personSelector;
// Label
private JLabel name, zuname, plz, wohnort;
// Label für Werte
private static JLabel persName, persZuname, persPLZ, persWohnort;
// Konstanten
private final int posLinkeSpalte = 0, posRechteSpalte = 300, posH3 = 70, posH4 = 100, posH5 = 130, posH6 = 160,
labelBreite = 250, labelHoehe = 15; // Container-Positionen
private static Person[] personenList;
// Klassenmethoden
public static int getAktuellenBoxIndex()
{
return personSelector.getSelectedIndex();
}
// KlassenKonstruktor
public Kartei(Person[] personen)
{
super("PersonenKartei");
// JComboBox erzeugen und füllen, Eigenschaften festlegen, Listener hinzufügen und dann alles zum
// JFrame addieren
personSelector = new JComboBox();
for (int i = 0; i < personen.length; i++)
{
personSelector.addItem(new Person(personen[i].getName(), personen[i].getZuname(), personen[i].getPLZ(),
personen[i].getWohnort()));
}
personenList = personen;
personSelector.setName("personSelector");
personSelector.setSize(484, 30);
add(personSelector);
personSelector.addActionListener(this);
// Label erzeugen und Eigenschaften setzen
// und alle Label zum JFrame hinzufügen
name = new JLabel("Vorname: ");
name.setBounds(posLinkeSpalte, posH3, labelBreite, labelHoehe);
name.setName("Vorname");
add(name);
zuname = new JLabel("Nachname: ");
zuname.setBounds(posLinkeSpalte, posH4, labelBreite, labelHoehe);
zuname.setName("Nachname");
add(zuname);
plz = new JLabel("PLZ: ");
plz.setBounds(posLinkeSpalte, posH5, labelBreite, labelHoehe);
plz.setName("PLZ");
add(plz);
wohnort = new JLabel("Wohnort: ");
wohnort.setBounds(posLinkeSpalte, posH6, labelBreite, labelHoehe);
wohnort.setName("hauptstadt");
add(wohnort);
persName = (new JLabel());
persName.setBounds(posRechteSpalte, posH3, labelBreite, labelHoehe);
persName.setName("Vorname Person");
add(persName);
persZuname = new JLabel();
persZuname.setBounds(posRechteSpalte, posH4, labelBreite, labelHoehe);
persZuname.setName("Zuname Person");
add(persZuname);
persPLZ = new JLabel();
persPLZ.setBounds(posRechteSpalte, posH5, labelBreite, labelHoehe);
persPLZ.setName("PLZ Person");
add(persPLZ);
persWohnort = new JLabel();
persWohnort.setBounds(posRechteSpalte, posH6, labelBreite, labelHoehe);
persWohnort.setName("Wohnort Person");
add(persWohnort);
// Eigenschaften fürs JFrame
setLayout(new BorderLayout());
setName("LaenderInfo");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setLocation(200, 200);
setSize(500, 250);
setVisible(true);
}
public static void setzeDaten()
{
int i = getAktuellenBoxIndex();
persName.setText(personenList[i].getName());
persZuname.setText(personenList[i].getZuname());
persPLZ.setText(String.valueOf(personenList[i].getPLZ()));
persWohnort.setText(personenList[i].getWohnort());
}
// Aktionen bei Auswahl in der Combobox
// und beim Setzen des Hakens in der Checkbox
@Override
public final void actionPerformed(final ActionEvent evt)
{
if (personSelector.getSelectedIndex() >= 0 & personSelector.getSelectedIndex() < personenList.length)
{
setzeDaten();
}
}
// Test mit main-Methode
public static void main(String[] args)
{
Person[] personen = new Person[4];
personen[0] = new Person("Anton", "Meier", 12563, "Berlin");
personen[1] = new Person("Anita", "Schroeder", 14778, "Roskow");
personen[2] = new Person("Sebastian", "Klein", 15223, "Teltow");
personen[3] = new Person("Marie", "Selbig", 12481, "Berlin");
new Kartei(personen);
}
}
Java:
package gui.pers;
public class Person
{
private String name;
private String zuname;
private long plz;
private String wohnort;
public Person(String name, String zuname, long plz, String wohnort)
{
this.name = name;
this.zuname = zuname;
this.plz = plz;
this.wohnort = wohnort;
}
public String getName()
{
return name;
}
public String getZuname()
{
return zuname;
}
public long getPLZ()
{
return plz;
}
public String getWohnort()
{
return wohnort;
}
// Methode zu ergänzen (welche und wie?)
}