Hey Leute,
Unsere Aufgabe ist es, ein Adressbuch zu erstellen.
Doch meine erstes Problem ist schon, dass ich es nicht hinbekomme, dass beim Feld "Geburtstag" wirklich nur ein Datum eingegeben werden kann:
Die betroffene Klasse ist die hier (Den Teil, der nicht funktioniert habe ich auskommentiert):
Die anderen Klassen:
Ich wäre euch für Hilfe mega-dankbar!
Unsere Aufgabe ist es, ein Adressbuch zu erstellen.
Doch meine erstes Problem ist schon, dass ich es nicht hinbekomme, dass beim Feld "Geburtstag" wirklich nur ein Datum eingegeben werden kann:
Die betroffene Klasse ist die hier (Den Teil, der nicht funktioniert habe ich auskommentiert):
Java:
// Die Klasse Adress-Eingabe-Maske beim Projekt von Adressverwaltung
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AdressEingabeMaske extends JFrame implements ActionListener
{
private JTextField name, vorname, straße, hausnummer, telefon, postleitzahl, ort, eMail, anrede, ICQ, geburtstag ;
private AdressListe aktuAdressliste;
//Konstruktor
// Über den Parameter pAdressliste im Konstruktor lernt diese die aktuelle Adressliste kennen
// und kann deren öffentliche Methoden aufrufen.
public AdressEingabeMaske(AdressListe pAdressliste)
{
super("Adresse");
aktuAdressliste = pAdressliste;
this.getContentPane().setBackground(Color.green);
this.getContentPane().setLayout(null);
//Anrede-Textfeld
JLabel anredeLabel = new JLabel ("Anrede:");
anredeLabel.setBounds (20, 10, 90, 30);
this.getContentPane().add (anredeLabel);
anrede = new JTextField (20);
anrede.setBounds (120, 10, 90, 30);
this.getContentPane().add (anrede);
//Name-Textfeld
JLabel nameLabel = new JLabel ("Name:");
nameLabel.setBounds (20, 40, 90, 30);
this.getContentPane().add (nameLabel);
name = new JTextField (20);
name.setBounds (120, 40, 90, 30);
this.getContentPane().add (name);
//Vorname-Textfeld
JLabel vornameLabel = new JLabel ("Vorname:");
vornameLabel.setBounds (20, 70, 90, 30);
this.getContentPane().add (vornameLabel);
vorname = new JTextField (20);
vorname.setBounds (120, 70, 90, 30);
this.getContentPane().add (vorname);
//Straße-Textfeld
JLabel straßeLabel = new JLabel ("Straße:");
straßeLabel.setBounds (20, 100, 90, 30);
this.getContentPane().add (straßeLabel);
straße = new JTextField (20);
straße.setBounds (120, 100, 90, 30);
this.getContentPane().add (straße);
//Hausnummer-Textfeld
JLabel hausnummerLabel = new JLabel ("Hausnummer:");
hausnummerLabel.setBounds (20, 130, 90, 30);
this.getContentPane().add (hausnummerLabel);
hausnummer = new JTextField (20);
hausnummer.setBounds (120, 130, 90, 30);
this.getContentPane().add (hausnummer);
//Telefon-Textfeld
JLabel telefonLabel = new JLabel ("Telefon:");
telefonLabel.setBounds (20, 160, 90, 30);
this.getContentPane().add (telefonLabel);
telefon = new JTextField (20);
telefon.setBounds (120, 160, 90, 30);
this.getContentPane().add (telefon);
//Postleitzahl-Textfeld
JLabel PostleitzahlLabel = new JLabel ("Postleitzahl:");
PostleitzahlLabel.setBounds (20, 190, 90, 30);
this.getContentPane().add (PostleitzahlLabel);
postleitzahl = new JTextField (20);
postleitzahl.setBounds (120, 190, 90, 30);
this.getContentPane().add (postleitzahl);
//Ort-Textfeld
JLabel OrtLabel = new JLabel ("Ort:");
OrtLabel.setBounds (20, 220, 90, 30);
this.getContentPane().add (OrtLabel);
ort = new JTextField (20);
ort.setBounds (120, 220, 90, 30);
this.getContentPane().add (ort);
//eMail-Textfeld
JLabel eMailLabel = new JLabel ("eMail:");
eMailLabel.setBounds (20, 250, 90, 30);
this.getContentPane().add (eMailLabel);
eMail = new JTextField (20);
eMail.setBounds (120, 250, 90, 30);
this.getContentPane().add (eMail);
//icq-Textfeld
JLabel ICQLabel = new JLabel ("ICQ-Nummer:");
ICQLabel.setBounds (20, 280, 90, 30);
this.getContentPane().add (ICQLabel);
ICQ = new JTextField (20);
ICQ.setBounds (120, 280, 90, 30);
this.getContentPane().add (ICQ);
//Geburtstag-Textfeld
JLabel GeburtstagLabel = new JLabel ("Geburtstag:");
GeburtstagLabel.setBounds (20, 310, 90, 30);
this.getContentPane().add (GeburtstagLabel);
geburtstag = new JTextField (20);
geburtstag.setBounds (120, 310, 90, 30);
this.getContentPane().add (geburtstag);
//ok-Knopf
JButton button = new JButton("ok");
button.setBounds (120, 350, 90, 30);
button.setBackground (Color.red);
button.addActionListener(this);
this.getContentPane().add(button);
}
Adresse getAdresse ()
{
Adresse dieseAdresse = new Adresse();
dieseAdresse.setName (name.getText());
dieseAdresse.setVorname (vorname.getText());
return dieseAdresse;
}
public void actionPerformed(ActionEvent event)
{
String cmd = event.getActionCommand();
if (cmd.equals("ok"))
{
aktuAdressliste.insert(getAdresse());
dispose();
}
}
/*
public void insertString(int offs, String str,
AttributeSet a)
throws BadLocationException {
// Überprüfen, ob nur Zahlen und Punkte eingegeben
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c != '.' && (c < '0' || c > '9'))
return;
}
String text = getText(0, getLength())+str;
// 1. Stelle Tag
if (text.length () > 0)
if (Integer.parseInt(text.substring(0, 1)) == 0 ||
Integer.parseInt(text.substring(0, 1)) > 3)
return;
// Tag
if (text.length () >= 2) {
int date = Integer.parseInt(text.substring(0, 2));
if (date < 1 || date > 31)
return;
}
// Zweiter .
if (text.length() >= 3)
if (text.charAt(2) != '.')
return;
// 1. Stelle Monat
if (text.length() >= 4)
if (text.charAt(3) != '0' &&
text.charAt(3) != '1')
return;
// Monat
if (text.length() >= 5) {
int month = Integer.parseInt(text.substring(3, 5));
if (month == 0 || month > 12)
return;
}
// Dritter .
if (text.length() >= 6)
if (text.charAt(5) != '.')
return;
// Maximale Länge
if (text.length() > 10)
return;
// Punkte einbauen
if (text.length() == 2 || text.length() == 5)
str += ".";
super.insertString(offs, str, a); */
}
Die anderen Klassen:
Java:
// Die Klasse Adresse beim Projekt Adressverwaltung
class Adresse
{
// Attribute
private String name;
private String vorname;
private String strasse;
private int plz;
private String wohnort;
// Konstruktor
// Erzeugt einen leeren Datensatz
public Adresse ()
{
name = "";
vorname = "";
strasse = "";
plz = -1;
wohnort = "";
}
// Methoden
int compareTo (Adresse y)
{
return this.name.compareTo(y.getName());
}
void setName (String pName)
{
name = pName;
}
String getName()
{
return name;
}
void setVorname (String pVorname)
{
vorname = pVorname;
}
String getVorname()
{
return vorname;
}
}
Java:
//Die Starter-Klasse
class Starter
{
public static void main(String[] args)
{
EinAus wnd = new EinAus();
wnd.setSize(800,600);
wnd.setVisible(true);
}
}
Java:
// Die Klasse Adress-Info-Maske beim Projekt von Adressverwaltung
//
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AdressInfoMaske extends JFrame
{
private JTextField name, vorname;
//Konstruktor
public AdressInfoMaske()
{
super("Adresse");
this.getContentPane().setBackground(Color.green);
this.getContentPane().setLayout(null);
//Name-Textfeld
JLabel nameLabel = new JLabel ("Name:");
nameLabel.setBounds (20, 40, 90, 30);
this.getContentPane().add (nameLabel);
name = new JTextField (20);
name.setBounds (120, 40, 90, 30);
this.getContentPane().add (name);
//Vorname-Textfeld
JLabel vornameLabel = new JLabel ("Vorname:");
vornameLabel.setBounds (20, 70, 90, 30);
this.getContentPane().add (vornameLabel);
vorname = new JTextField (20);
vorname.setBounds (120, 70, 90, 30);
this.getContentPane().add (vorname);
}
void setAdresse (Adresse pAdresse)
{
name.setText (pAdresse.getName());
vorname.setText (pAdresse.getVorname());
}
}
Java:
// Die Klasse Adress-Liste beim Projekt von Adressverwaltung
//
class AdressListe extends List
{
public AdressListe()
{
super();
}
//insert fügt die neue Adresse richtig in die vorhandene Adress-Liste ein.
public void insert (Adresse neueAdresse)
{
if (super.isEmpty()) //Falls die Adressliste leer ist
{
super.insertBehind (neueAdresse); //neue Adresse vorne einfügen
}
else // falls schon Adressen vorhanden sind, muss die richtige Position
// gefunden werden
{
super.toFirst(); // springe an den Anfang der Liste
boolean eingefuegt = false;
while (!eingefuegt && !super.isBehind()) //solange nicht eingefügt und
{ // nicht am Ende der Liste
Adresse aktuelleAdresse = (Adresse) getItem();
if (neueAdresse.compareTo(aktuelleAdresse)<0)
//Falls die neue Adresse alphabetisch vor der aktuellen liegt
{
super.insertInFrontOf(neueAdresse); //füge die neue Adresse vor der aktuellen ein
eingefuegt = true; // schon eingefügt
}
else //falls die neue Adresse alphabetisch nicht vor der aktuellen liegt
super.next(); //gehe eine Position weiter in der Liste
}
if (!eingefuegt)
{
super.previous();
Adresse aktuelleAdresse = (Adresse) this.getItem();
//Falls die neue Adresse vor der aktuellen liegt
if (neueAdresse.compareTo(aktuelleAdresse)<0)
{
super.insertInFrontOf(neueAdresse);
}
else
{
super.insertBehind(neueAdresse);
}
}
}
}
}
Java:
// Einfache graphische Benutzeroberfläche zur Verwaltung von Adressen.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EinAus extends JFrame implements ActionListener
{
private AdressListe meineAdressliste = new AdressListe();
private AdressEingabeMaske meineEingabeMaske = null;
private AdressInfoMaske meineInfoMaske = null;
public EinAus()
{
super("Verwaltung von Adressen");
this.getContentPane().setBackground(Color.lightGray);
this.getContentPane().setLayout(null);
//Dialog-Button
JButton button1 = new JButton("Weiter");
button1.setBounds (320, 40, 150, 30);
button1.setBackground (Color.red);
button1.addActionListener(this);
this.getContentPane().add(button1);
//Ende-Button
JButton button2 = new JButton("Reset");
button2.setBounds (320, 80, 150, 30);
button2.setBackground (Color.red);
button2.addActionListener(this);
this.getContentPane().add(button2);
//Dialog-Button
JButton button3 = new JButton("Neue Adresse");
button3.setBounds (320, 120, 150, 30);
button3.setBackground (Color.red);
button3.addActionListener(this);
this.getContentPane().add(button3);
//Ende-Button
JButton button4 = new JButton("Ende");
button4.setBounds (320, 160, 150, 30);
button4.setBackground (Color.red);
button4.addActionListener(this);
this.getContentPane().add(button4);
//Window-Listener
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
setVisible(false);
dispose();
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent event)
{
String cmd = event.getActionCommand();
if (cmd.equals("Neue Adresse"))
{
meineEingabeMaske = new AdressEingabeMaske(meineAdressliste);
meineEingabeMaske.setSize(500,400);
meineEingabeMaske.setVisible(true);
}
else if (cmd.equals("Weiter"))
{
if (!meineAdressliste.isEmpty())
{
if (!meineAdressliste.isBehind())
{
meineAdressliste.next();
if (!meineAdressliste.isBehind())
{
Adresse aktuelleAdresse = (Adresse) meineAdressliste.getItem();
if (meineInfoMaske != null)
{
meineInfoMaske.dispose();
}
meineInfoMaske = new AdressInfoMaske();
meineInfoMaske.setSize(300,200);
meineInfoMaske.setVisible(true);
meineInfoMaske.setAdresse (aktuelleAdresse);
}
}
}
}
else if (cmd.equals("Reset"))
{
if (!meineAdressliste.isEmpty())
{
meineAdressliste.toFirst();
Adresse aktuelleAdresse = (Adresse) meineAdressliste.getItem();
if (meineInfoMaske != null)
{
meineInfoMaske.dispose();
}
meineInfoMaske = new AdressInfoMaske();
meineInfoMaske.setSize(300,200);
meineInfoMaske.setVisible(true);
meineInfoMaske.setAdresse (aktuelleAdresse);
}
}
else if (cmd.equals("Ende"))
{
setVisible(false);
dispose();
System.exit(0);
}
}
}
Java:
// Basisklassse lineare Datenorganisation
public class Element
{
private Object inhalt;
private Element nachfolger;
public Element (Object neuerlnhalt, Element neuerNachfolger)
{
inhalt = neuerlnhalt;
nachfolger = neuerNachfolger;
}
public Element (Object neuerInhalt)
{
inhalt = neuerInhalt;
nachfolger = null;
}
public void setInhalt ( Object neuerlnhalt)
{
inhalt = neuerlnhalt;
}
public Object getInhalt()
{
return inhalt;
}
public void setNachfolger(Element neuerNachfolger)
{
nachfolger = neuerNachfolger;
}
public Element getNachfolger()
{
return nachfolger;
}
}
Java:
public class List
{
/* Listenklasse mit Zugriffsmethoden .
*/
private Element kopf;
public Element aktuell;
public List()
{
kopf = new Element("Start");
aktuell = kopf;
}
public boolean isEmpty()
{
if (kopf.getNachfolger()==null)
return true;
else return false;
}
public boolean isInFrontOf()
{
return (aktuell ==kopf);
}
public boolean isBehind()
{
return (aktuell == null);
}
public void next()
{
if (!isBehind())
{
aktuell = aktuell.getNachfolger();
}
}
public void previous()
{
if(!isInFrontOf())
{
Element help = aktuell;
toFirst();
if (!(aktuell==help))
{
while(aktuell.getNachfolger()!=help)
{
next();
}
}
else aktuell = kopf;
}
}
public void toFirst()
{
aktuell = kopf.getNachfolger();
}
public void toLast()
{
if(isEmpty())
{
aktuell=kopf;
}
else
{
toFirst();
while(! (aktuell.getNachfolger()==null))
{
next();
}
}
}
public Object getItem()
{
if(isEmpty())
{
return null;
}
else if (isInFrontOf())
{
return null;
}
else if(isBehind())
{
return null;
}
else
{
return aktuell.getInhalt();
}
}
public void replace(Object ersatz)
{
if(!isEmpty() & !isBehind() & !isInFrontOf())
{
aktuell.setInhalt(ersatz);
}
}
public void insertBehind (Object pObject)
{
if(!isBehind())
{
Element neu = new Element(pObject,null);
neu.setNachfolger(aktuell.getNachfolger());
aktuell.setNachfolger(neu);
aktuell=neu;
}
}
public void insertInFrontOf (Object pObject)
{
if(!isInFrontOf())
{
Element neu = new Element(pObject,aktuell);
Element help =aktuell;
toFirst();
if(aktuell==help)
{
kopf.setNachfolger(neu);
}
else
{
while(!(aktuell.getNachfolger()==help) )
{
next();
}
aktuell.setNachfolger(neu);
aktuell=help;
}
}
}
public void remove()
{
if(!isBehind() && !isInFrontOf())
{
Element help = aktuell;
previous();
aktuell.setNachfolger(help.getNachfolger());
aktuell = help.getNachfolger();
}
}
}
Ich wäre euch für Hilfe mega-dankbar!