Hallo Leute,
ich arbeite seit kurzem mit der grafischen Oberfläche AWT jedoch komm ich an einem Punkt nicht weiter und zwar habe ich einen Button "Personendaten aufnehmen" erzeugt wenn ich draufklicke kann ich meine Personendaten eingeben aber die regulären Ausdrücke funktionieren nicht, z.b. wenn Benutzer eine falsche Eingabe betätigt wird es dem Benutzer nicht mitgeteilt. Meine regulären Ausdrücke befinden sich in der Klasse Person hier meine Codes:
ich wäre für jede Hilfe sehr dankbar....
ich arbeite seit kurzem mit der grafischen Oberfläche AWT jedoch komm ich an einem Punkt nicht weiter und zwar habe ich einen Button "Personendaten aufnehmen" erzeugt wenn ich draufklicke kann ich meine Personendaten eingeben aber die regulären Ausdrücke funktionieren nicht, z.b. wenn Benutzer eine falsche Eingabe betätigt wird es dem Benutzer nicht mitgeteilt. Meine regulären Ausdrücke befinden sich in der Klasse Person hier meine Codes:
Java:
import java.io.*;
import java.net.Socket;
import java.awt.*;
import java.awt.event.*;
/**
* @author zengin
* Die Klasse ControlerThread des Clients dient dazu,
* die Klasse ViewThread und die Klasse ModelThread
* also die beiden Threads via Pipe miteinander zu verbinden
* und anschliessend zu starten. Ebenfalls stellt diese Klasse
* die Socket - Kommunikation bereit.
*/
public class ControlerThread extends Frame implements ActionListener, MouseListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
Label label1;
Label label2;
Label label3;
Label label4;
Label label5;
Label label6;
Label label7;
Label label8;
Label label9;
Label ipadresse;
TextField text1;
TextField text2;
TextField text3;
TextField text4;
TextField text5;
TextField text6;
TextField text7;
TextField text8;
TextField text9;
Button button1;
Button button2;
PopupMenu popup;
Label label;
private Person personen;
public ControlerThread()
{
super("ADRELI 4 Client");
this.setSize(500, 600);
this.setLocation(100,100);
this.setLayout(null);
this.setVisible(true);
label1 = new Label("Name: ");
label1.setSize(50,30);
label1.setLocation(20, 170);
add(label1);
label1.setVisible(false);
label2 = new Label("Vorname: ");
label2.setSize(70,30);
label2.setLocation(20, 210);
add(label2);
label2.setVisible(false);
label3 = new Label("Anrede: ");
label3.setSize(50,30);
label3.setLocation(20, 250);
add(label3);
label3.setVisible(false);
label4 = new Label("Strasse: ");
label4.setSize(100,30);
label4.setLocation(20, 290);
add(label4);
label4.setVisible(false);
label5 = new Label("Ort: ");
label5.setSize(100,30);
label5.setLocation(20, 330);
add(label5);
label5.setVisible(false);
label6 = new Label("PLZ: ");
label6.setSize(50,30);
label6.setLocation(20, 370);
add(label6);
label6.setVisible(false);
label7 = new Label("Telefon: ");
label7.setSize(100,30);
label7.setLocation(20, 410);
add(label7);
label7.setVisible(false);
label8 = new Label("Fax: ");
label8.setSize(100,30);
label8.setLocation(20, 450);
add(label8);
label8.setVisible(false);
label9 = new Label("Bemerkung: ");
label9.setSize(150,30);
label9.setLocation(20, 490);
add(label9);
label9.setVisible(false);
text1 = new TextField();
text1.setSize(200,25);
text1.setLocation(200, 170);
add(text1);
text1.setVisible(false);
text2 = new TextField();
text2.setSize(200,25);
text2.setLocation(200, 210);
add(text2);
text2.setVisible(false);
text3 = new TextField();
text3.setSize(200,25);
text3.setLocation(200, 250);
add(text3);
text3.setVisible(false);
text4 = new TextField();
text4.setSize(200,25);
text4.setLocation(200, 290);
add(text4);
text4.setVisible(false);
text5 = new TextField();
text5.setSize(200,25);
text5.setLocation(200, 330);
add(text5);
text5.setVisible(false);
text6 = new TextField();
text6.setSize(200,25);
text6.setLocation(200, 370);
add(text6);
text6.setVisible(false);
text7 = new TextField();
text7.setSize(200,25);
text7.setLocation(200, 410);
add(text7);
text7.setVisible(false);
text8 = new TextField();
text8.setSize(200,25);
text8.setLocation(200, 450);
add(text8);
text8.setVisible(false);
text9 = new TextField();
text9.setSize(200,25);
text9.setLocation(200, 490);
add(text9);
text9.setVisible(false);
MenuBar menuBar = new MenuBar();
this.setMenuBar(menuBar);
Menu menu = new Menu("Datei");
menuBar.add(menu);
MenuItem menuItem = new MenuItem("Oeffnen", new MenuShortcut(KeyEvent.VK_O));
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new MenuItem("Speichern", new MenuShortcut(KeyEvent.VK_S));
menuItem.addActionListener(this);
menu.add(menuItem);
menu.addSeparator();
menuItem = new MenuItem("Beenden");
menuItem.addActionListener(this);
menu.add(menuItem);
menu = new Menu("Info");
menuBar.add(menu);
menuItem = new MenuItem("Info", new MenuShortcut(KeyEvent.VK_I));
menuItem.addActionListener(this);
menu.add(menuItem);
popup = new PopupMenu();
this.add(popup);
MenuItem mItem = new MenuItem("Datei Öffnen");
mItem.addActionListener(this);
popup.add(mItem);
popup.addSeparator();
mItem = new MenuItem("Datei Speichern");
mItem.addActionListener(this);
popup.add(mItem);
popup.addSeparator();
mItem = new MenuItem("Beenden");
mItem.addActionListener(this);
popup.add(mItem);
label = new Label();
label.setSize(320,30);
label.setLocation(25, 250);
add(label);
button1 = new Button("Person aufnehmen");
button1.setSize(200, 25);
button1.setLocation(20, 550);
add(button1);
button1.addMouseListener(this);
button2 = new Button("Records in eine Datei speichern");
button2.setSize(200, 25);
button2.setLocation(250, 550);
add(button2);
button2.addMouseListener(this);
this.setVisible(true);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
});
this.enableEvents(AWTEvent.MOUSE_EVENT_MASK);
}
public void processMouseEvent(MouseEvent me)
{
if(me.isPopupTrigger())
popup.show(me.getComponent(), me.getX(), me.getY());
}
public void actionPerformed(ActionEvent ae)
{
Object o = ae.getSource();
if(((MenuItem)o).getLabel().equals("Oeffnen"))
{
FileDialog fileDialog = new FileDialog(this, "Datei Oeffnen", FileDialog.LOAD);
fileDialog.setVisible(true);
label.setText("Datei " + fileDialog.getDirectory() + fileDialog.getFile() + " ausgewählt");
}
else if(((MenuItem)o).getLabel().equals("Speichern"))
{
FileDialog fileDialog = new FileDialog(this, "Datei speichern unter", FileDialog.SAVE);
fileDialog.setVisible(true);
label.setText("Speichern unter " + fileDialog.getDirectory() + fileDialog.getFile());
}
else if(((MenuItem)o).getLabel().equals("Datei Öffnen"))
{
FileDialog fileDialog = new FileDialog(this, "Datei Oeffnen", FileDialog.LOAD);
fileDialog.setVisible(true);
label.setText("Datei " + fileDialog.getDirectory() + fileDialog.getFile() + " ausgewählt");
}
else if(((MenuItem)o).getLabel().equals("Datei Speichern"))
{
FileDialog fileDialog = new FileDialog(this, "Datei speichern unter", FileDialog.SAVE);
fileDialog.setVisible(true);
label.setText("Speichern unter " + fileDialog.getDirectory() + fileDialog.getFile());
}
else if(((MenuItem)o).getLabel().equals("Beenden"))
{
ClientMeinDialog meinDialog = new ClientMeinDialog(this, "Ende-Dialog", "Wollen Sie die Anwendung wirklich beenden?");
if(meinDialog.getAntwort())
System.exit(0);
}
else if(((MenuItem)o).getLabel().equals("Info"))
{
@SuppressWarnings("unused")
ClientMeinDialog meinDialog = new ClientMeinDialog(this, "Info", "Dieses Programm enthält ein Menü");
}
}
public void mouseEntered(MouseEvent arg0)
{
}
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException
{
@SuppressWarnings("unused")
ControlerThread ct = new ControlerThread();
String requestToServer;
String ipadresse =Input.readString("Geben Sie bitte die IP-Adresse zum Verbinden ein: ");
Socket clientSocket = new Socket(ipadresse, 45678);
System.out.println("Verbindung zum Server mit der Adresse "
+ clientSocket.getInetAddress() + " wurde hergestellt.");
/**Kommunikationsmöglichkeiten über Sockets*/
BufferedWriter ueberSocketAnServerSenden = new BufferedWriter(new OutputStreamWriter(
clientSocket.getOutputStream()));
/**Antwort vom Server*/
BufferedReader ueberSocketVomServerLesen = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
/**Pipes zur Kommunikation anlegen
*Reader anlegen*/
PipedReader prControllerVonModel = new PipedReader();
PipedReader prControllerVonView = new PipedReader();
PipedReader pr1 = new PipedReader();
PipedReader pr2 = new PipedReader();
/**Writer anlegen*/
PipedWriter pwControllerZuModel = new PipedWriter();
PipedWriter pwControllerZuView = new PipedWriter();
PipedWriter pw2 = new PipedWriter();
PipedWriter pw1 = new PipedWriter();
pwControllerZuModel.connect(pr1);
pwControllerZuView.connect(pr2);
pw2.connect(prControllerVonModel);
pw1.connect(prControllerVonView);
ViewThread t1 = new ViewThread(pr2, pw1);
ModelThread t2 = new ModelThread(pr1, pw2);
t1.start(); // asynchroner Start
t2.start(); // asynchroner Start
/**"a" wird zum Weiterleiten der eingegebenen Auswahl benötigt.*/
int a;
while (true) {
try {
/**Eingabe aus der Pipe lesen und in "a" speichern*/
a = prControllerVonView.read();
/**ausgewaehlte Nummer("a") in String umwandeln*/
requestToServer = "" + a;
/**Mittels Socket "a" an den Server senden*/
ueberSocketAnServerSenden.write(requestToServer);
ueberSocketAnServerSenden.newLine();
ueberSocketAnServerSenden.flush();
/**blockiert bis ganze Zeile vom Server empfangen wurde.*/
String answer = ueberSocketVomServerLesen.readLine();
/**Antwort zurück und ausgegeben*/
System.out.println(answer);
pwControllerZuModel.write(a);
prControllerVonModel.read();
pwControllerZuView.write(0);
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
if(e.getComponent() == button1)
{
personen = new Person();
label1.setVisible(true);
label2.setVisible(true);
label3.setVisible(true);
label4.setVisible(true);
label5.setVisible(true);
label6.setVisible(true);
label7.setVisible(true);
label8.setVisible(true);
label9.setVisible(true);
text1.setVisible(true);
text2.setVisible(true);
text3.setVisible(true);
text4.setVisible(true);
text5.setVisible(true);
text6.setVisible(true);
text7.setVisible(true);
text8.setVisible(true);
text9.setVisible(true);
}
if(e.getComponent() == button2)
{
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
Java:
import java.io.Serializable;
/**
* @author zengin
* Mithilfe der Klasse "Person" werden Daten über Personen erfasst
*/
public class Person implements Serializable
{
public String name;
public String vorname;
public String anrede;
public String strasse;
public String plz;
public String ort;
public String telefon;
public String fax;
public String bemerkung;
static final long serialVersionUID = 0L;
/**
* überprüft den eingegebenen Namen mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
public void read_in_Name()
{
System.out.println("(z.B. Musterfrau)");
name = Input.readString("Name: ","([A-ZÖÜ][a-zöü]+)",
"\nGeben Sie Ihren Namen bitte nach dem Muster des angezeigten Beispiels ein!");
}
/**
* überprüft den eingegebenen Vorname mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
public void read_in_Vorname()
{
System.out.println("(z.B. Maria)");
System.out.println("(z.B. Ana-Marie)");
vorname = Input.readString("Vorname: ",
"([A-ZÖÜ][a-zöü]+)|([A-ZÖÜ][a-zöü]+[-][A-ZÖÜ][a-zöü]+)",
"\nGeben Sie Ihren Vornamen bitte nach dem Muster des angezeigten Beispiels ein! ");
}
public String getName() {
return name;
}
public String getVorname() {
return vorname;
}
public String getAnrede() {
return anrede;
}
public String getStrasse() {
return strasse;
}
public String getPlz() {
return plz;
}
public String getOrt() {
return ort;
}
public String getTelefon() {
return telefon;
}
public String getFax() {
return fax;
}
public String getBemerkung() {
return bemerkung;
}
/**
* überprüft die eingegebene Anrede mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
private void read_in_Anrede()
{
System.out.println("(z.B. Frau oder Herr)");
anrede = Input.readString("Anrede: ","(Herr|Frau)",
"Diese Anrede wird leider nicht akzeptiert, bitte geben Sie Herr oder Frau ein! ");
}
/**
* überprüft die eingegebene Strasse mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
private void read_in_Strasse()
{
System.out.println("(z.B. Musterstrasse 1)");
System.out.println("(oder Unterer Hofweg 1)");
strasse = Input.readString("Strasse: ",
"([A-ZÖÜ][a-zöüß]+[/ ][0-9]+)|([A-ZÖÜ][a-zöüß]+[/ ][A-ZÖÜ][a-zöüß]+[/ ][0-9]+)",
"\nGeben Sie Ihre Strasse bitte nach dem Muster des angezeigten Beispiels ein!");
}
/**
* überprüft die eingegebene Postleitzahl mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
private void read_in_Plz()
{
System.out.println("(z.B. D-12345)");
plz = Input.readString("PLZ: ", "[A-Z]+[-][0-9]{1,5}",
"\nGeben Sie Ihre PLZ bitte nach dem Muster des angezeigten Beispiels ein!");
}
/**
* überprüft den eingegebenen Ort mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
private void read_in_Ort()
{
System.out.println("(z.B. Musterort)");
ort = Input.readString("Ort: ", "([A-Z][a-z]+)|([A-ZÖÜ][a-zöü]+)",
"\nGeben Sie Ihren Ort bitte nach dem Muster des angezeigten Beispiels ein!");
}
/**
* überprüft die eingegebene Telefonnummer mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
private void read_in_Telefon()
{
System.out.println("(z.B. +49 12345-12345");
System.out.println("(z.B. 12345-12345");
telefon = Input.readString("Telefon: ", "([/+][0-9]{2}[/ ])?[0-9]+[/-][0-9]+",
"\nGeben Sie Ihre Telefonnummer bitte nach dem Muster des angezeigten Beispiels ein!");
}
/**
* überprüft die eingegebene Faxnummer mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
private void read_in_Fax()
{
System.out.println("(z.B. +49 12345-12345)");
System.out.println("(oder 12345-12345");
fax = Input.readString("Fax: ", "([/+][0-9]{2}[/ ])?[0-9]+[/-][0-9]+",
"\nGeben Sie Ihre Faxnummer bitte nach dem Muster des angezeigten Beispiels ein!");
}
/**
* überprüft die eingegebene Bemerkung mithilfe des angegebenen regulären Ausdrucks
* auf syntaktische Korrektheit
*/
private void read_in_Bemerkung()
{
System.out.println("Sie muessen nichts eingeben!");
bemerkung = Input.readString("Bemerkung: ");
}
/**
* Sammlung von Methoden
*/
public Person readPerson()
{
read_in_Name();
read_in_Vorname();
read_in_Anrede();
read_in_Strasse();
read_in_Plz();
read_in_Ort();
read_in_Telefon();
read_in_Fax();
read_in_Bemerkung();
return null;
}
/**
* Ueberschriebene toString-Methode zur angepassten Ausgabe von Personenobjekten.
*/
public String toString()
{
String out = "Name: " + name + "\nVorname: " + vorname
+ "\nAnrede: " + anrede + "\nStrasse: " + strasse + "\nPLZ: "
+ plz + "\nOrt: " + ort + "\nTelefon: " + telefon + "\nFax:"
+ fax + "\nBemerkung: " + bemerkung;
return out;
}
}
ich wäre für jede Hilfe sehr dankbar....