# Adressen verwalten



## bernd (9. Sep 2004)

Hallo zusammen!

Ich möchte eine Adressverwaltung basteln (möglichst einfach).
Und zwar hatte ich mir das so vorgestellt:
Über JTextfelder sollen z.B. Vorname, Name eingegeben werden und auf Knopfdruck
in eine Textdatei geschrieben werden.
Diese Textdatei soll neue einträge hinten anhängen, und abspeichern.
Umgekehrt sollten die Einträge der Textdatei auch wieder ausgelesen werden können.

Gibt es da ein einfach verständliches Beispiel wie man an so ne Sache dran geht?


----------



## P3AC3MAK3R (9. Sep 2004)

Verschoben: Aufgaben und Gesuche


----------



## Manfred (9. Sep 2004)

Ist zwar ohne speichern in Datei, aber das ist denke ich nicht so schwer zu realisieren. "Einfach" alle Personen Objekte speichern


Klasse GUI


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

public class GUI extends JFrame
{
    private JFrame f;
    private JTextField tfNname;
    private JTextField tfVname;
    private JTextField tfStrasse;
    private JTextField tfOrt;
    private JTextField tfAnzahl;
    private JPanel pLabel;
    private JPanel pField;
    private JPanel pButton;
    private JButton save;
    private JButton clear;
    private JButton next;
    private JButton last;
    private JButton newp;
    private Person[] pers;
    public int persAnz;
    private int curPos;
    
    public static void main(String[] args)
    {
        GUI g = new GUI();
    }
    
    public GUI()
    {
        super("Eingabeformular");
        getContentPane().setLayout(new BorderLayout());
        //setSize(300,300);
        setLocation(300,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
        JLabel lNname = new JLabel("Name");
        JLabel lVname = new JLabel("Nachname");
        JLabel lStrasse = new JLabel("Strasse");
        JLabel lOrt = new JLabel("Ort");
        JLabel lAnzahl = new JLabel("Position");
        
        tfNname = new JTextField(15);
        tfVname = new JTextField(15);
        tfStrasse = new JTextField(15);
        tfOrt = new JTextField(15);
        tfAnzahl = new JTextField(15);
        
        pLabel = new JPanel(new GridLayout(5,1));
        pLabel.add(lNname);
        pLabel.add(lVname);
        pLabel.add(lStrasse);
        pLabel.add(lOrt);
        pLabel.add(lAnzahl);
        getContentPane().add(BorderLayout.WEST, pLabel);
        
        pField = new JPanel(new GridLayout(5,1));
        pField.add(tfVname);
        pField.add(tfNname);
        pField.add(tfStrasse);
        pField.add(tfOrt);
        pField.add(tfAnzahl);
        getContentPane().add(pField);
        
        pButton = new JPanel(new GridLayout(2,3));
        save = new JButton("Save");
        clear = new JButton ("Clear");
        next = new JButton("Next");
        last = new JButton("Last");
        newp = new JButton("New");
        pButton.add(save);
        pButton.add(newp);
        pButton.add(clear);    
        pButton.add(last);
        pButton.add(next);
        getContentPane().add(BorderLayout.SOUTH, pButton);
        
        addButtonListener(save);
        addButtonListener(clear);
        addButtonListener(newp);
        addButtonListener(last);
        addButtonListener(next);
        
        

        pers = new Person[10];
        persAnz=0;
        curPos=-1;
        updateAnz();
        
        pack();
        setVisible(true);
    }
    
    private void addButtonListener(JButton jb)
    {
        jb.addActionListener(new ActionListener() 
        {           
            public void actionPerformed(ActionEvent ae) 
            {               
                eingabe(ae.getActionCommand());
            }
        });
    }
        
    
    private void eingabe(String k)
    {
        if(k.equals("Save"))
        {
            pers[persAnz] = new Person();
            pers[persAnz].setVname(tfVname.getText());
            pers[persAnz].setNname(tfNname.getText());
            pers[persAnz].setStrasse(tfStrasse.getText());
            pers[persAnz].setOrt(tfOrt.getText());
            
            persAnz++;
            curPos=persAnz-1;
            updateAnz();
            save.setEnabled(false);
        }
        
        if(k.equals("Clear"))
        {
            clearTextField();
        }
        
        if(k.equals("Next"))
        {
            
            if(curPos+1 <= persAnz-1)
            {
                curPos++;
                fillField(curPos);
                updateAnz();
            }
        }
        
        if(k.equals("Last"))
        {
            if(curPos-1 >= 0)
            {
                curPos--;
                fillField(curPos);
                updateAnz();
            }
        }

        if(k.equals("New"))
        {
            clearTextField();
            tfVname.requestFocus();
            save.setEnabled(true);
        }
    }
    
    private void updateAnz()
    {
        tfAnzahl.setText((curPos+1)+" / "+persAnz);
    }
    
    private void fillField(int pos)
    {
        tfNname.setText(pers[curPos].getNname());
        tfVname.setText(pers[curPos].getVname());
        tfStrasse.setText(pers[curPos].getStrasse());
        tfOrt.setText(pers[curPos].getOrt());
    }
    
    private void clearTextField()
    {
        tfNname.setText("");
        tfVname.setText("");
        tfStrasse.setText("");
        tfOrt.setText("");
    }
        
    
}
```

Klasse Person



```
public class Person
{
	private String vname;
	private String nname;
	private String strasse;
	private String ort;
	
	public Person()
	{
	}
	
	public void setVname(String s)
	{
	    vname=s;
	}
	
	public void setNname(String s)
	{
	    nname=s;
	}
	
	public void setStrasse(String s)
	{
	    strasse=s;
	}
	
	public void setOrt(String s)
	{
	    ort=s;
	}
	
	public String getNname()
	{
	    return nname;
	}
	
	public String getVname()
	{
	    return vname;
	}
	
	public String getStrasse()
	{
	    return strasse;
	}
	
	public String getOrt()
	{
	    return ort;
	}	
}
```


----------



## bernd (9. Sep 2004)

Klasse, danke erst mal.
Ich glaub da kann ich was mit anfangen.


----------



## Kerberus (3. Okt 2004)

Entwickle auch gerade so ein Programm. (Beta-Version ist schon fertig)
Auch das Speichern wird darin unterstützt. Wenn du noch interessiert bist, schreibe mir eine E-Mail. Dann schicke ich dir einen Download-Link

E-Mail: nicosantschi@bluewin.ch


----------



## bernd (5. Okt 2004)

Interesse vorhanden!
E-Mail ist unterwegs!


----------



## Manfred (7. Okt 2004)

Ich habe mittlerweilen auch ein "kleines" Update!

Adressbuch JAR-download

Source ist im JAR enthalten!


Features:
Speichern
Speichern unter...
Laden
Exportieren als CSV
Importieren von CSV
Suchen nach Einträgen
Liste anzeigen
Löschen/Ändern von Einträgen
Sortieren nach Nachname

mit Menüsteuerung


----------



## bernd (10. Nov 2004)

Kann man sowas nicht auch mit Vectoren lösen, oder bau ich da auf Sand?  ???:L


----------



## Student (10. Nov 2004)

bernd hat gesagt.:
			
		

> Kann man sowas nicht auch mit Vectoren lösen, oder bau ich da auf Sand?  ???:L


aus welchem grund willst du das machen bzw. wo willst du Vector-objekte verwenden?


----------



## bernd (10. Nov 2004)

Hab gelesen, daß ein Vector ähnlich einem Array ist.
Unterschied ich brauch dem Vector keine Größe vorzugeben!
Also dachte ich mir das muss sich doch anbieten um Adressen darin zu speichern!
Aber das mit dem speichern bzw. auslesen krieg ich nicht wirklich auf die Reihe!


----------



## Student (10. Nov 2004)

achso.
ja .. da kannst auch einfach als Typ eine AbstractList nehmen 
:arrow: http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractList.html
und dann eben darunter eine ArrayList oder eben einen Vector als speichermedium nehmen.

geht sicherlich ;-)


----------

