Adressen verwalten

Status
Nicht offen für weitere Antworten.

bernd

Bekanntes Mitglied
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?

:D
 

Manfred

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


Klasse GUI

Code:
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


Code:
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;
	}	
}
 

Kerberus

Bekanntes Mitglied
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
 

Manfred

Bekanntes Mitglied
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

Bekanntes Mitglied
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! :)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben