Hallo,
erst mal vorneweg: Ich bin noch Anfänger
Ich versuche mittels einer Methode die Benutzereingaben in der GUI zu überprüfen, bevor sie weitergeleitet werden.
Dabei geht es darum, dass der Benutzer in eine Anzahl von Textfeldern double oder int-Zahlen eingeben muss, bevor er einen Button zur Verarbeitung der Zahlen drückt.
Mein erster Ansatz war der folgende:
1. Ich habe die Prüfroutine in den ActionListener des Buttons reingeschrieben.
2. Ich habe bei einer kleinen Versuchs-GUI einfach jedes Textfeld einzeln überprüft, ob was drin steht und ob es ein int oder double sein könnte (ich befürchte, dass der Punkt als Dezimaldelimiter für viele User erst mal ein Problem sein könnte, aber ich muss mich noch ein wenig mit locale beschäftigen ...).
[Java]btnHinzufgen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String tname = fldName.getText();
double tx1,tx2,tx3;
//Versuch bei x1
try {
tx1 = Double.valueOf(fldX1.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Die Eingabe für x1 war nicht gültig! \nBitte Zahl eingeben und auf den DezimalPUNKT achten!","Fehler", JOptionPane.ERROR_MESSAGE);
return;
}
//Versuch bei x2
try {
tx2 = Double.valueOf(fldX2.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Die Eingabe für x2 war nicht gültig! \nBitte Zahl eingeben und auf den DezimalPUNKT achten!","Fehler", JOptionPane.ERROR_MESSAGE);
return;
}
//Versuch bei x3
try {
tx3 = Double.valueOf(fldX3.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Die Eingabe für x3 war nicht gültig! \nBitte Zahl eingeben und auf den DezimalPUNKT achten!","Fehler", JOptionPane.ERROR_MESSAGE);
return;
}
Punkt TPunkt = new Punkt(tname, tx1,tx2,tx3);
PListe.add(TPunkt);
table.revalidate();
table.repaint();
}
});[/Java]
Jetzt stoße ich damit aber an Grenzen:
1. In der eigentlichen Anwendung kommt diese Überprüfung sehr oft vor und dazu noch mit drei bis 9 Feldern.
2. Ich will nicht in jeden Button wieder die ganze Routine reinschreiben, sondern an einem gesonderten Ort und dann im Listener nur noch darauf zugreifen. Eine eigene Klasse ist dafür wohl ein wenig zu hoch gegriffen, oder? Wie kann ich solche "allgemeinen" Routinen am besten unterbringen?
3. Kann ich die Namen der Textfelder in der Überprüfungsroutine nachdem ich sie als Argumente übergeben habe, irgendwie "serialisieren" oder "verzahlen", dass ich die Inhalte mir einer Art von Schleife überprüfen kann?
Danke schon mal
erst mal vorneweg: Ich bin noch Anfänger
Ich versuche mittels einer Methode die Benutzereingaben in der GUI zu überprüfen, bevor sie weitergeleitet werden.
Dabei geht es darum, dass der Benutzer in eine Anzahl von Textfeldern double oder int-Zahlen eingeben muss, bevor er einen Button zur Verarbeitung der Zahlen drückt.
Mein erster Ansatz war der folgende:
1. Ich habe die Prüfroutine in den ActionListener des Buttons reingeschrieben.
2. Ich habe bei einer kleinen Versuchs-GUI einfach jedes Textfeld einzeln überprüft, ob was drin steht und ob es ein int oder double sein könnte (ich befürchte, dass der Punkt als Dezimaldelimiter für viele User erst mal ein Problem sein könnte, aber ich muss mich noch ein wenig mit locale beschäftigen ...).
[Java]btnHinzufgen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String tname = fldName.getText();
double tx1,tx2,tx3;
//Versuch bei x1
try {
tx1 = Double.valueOf(fldX1.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Die Eingabe für x1 war nicht gültig! \nBitte Zahl eingeben und auf den DezimalPUNKT achten!","Fehler", JOptionPane.ERROR_MESSAGE);
return;
}
//Versuch bei x2
try {
tx2 = Double.valueOf(fldX2.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Die Eingabe für x2 war nicht gültig! \nBitte Zahl eingeben und auf den DezimalPUNKT achten!","Fehler", JOptionPane.ERROR_MESSAGE);
return;
}
//Versuch bei x3
try {
tx3 = Double.valueOf(fldX3.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Die Eingabe für x3 war nicht gültig! \nBitte Zahl eingeben und auf den DezimalPUNKT achten!","Fehler", JOptionPane.ERROR_MESSAGE);
return;
}
Punkt TPunkt = new Punkt(tname, tx1,tx2,tx3);
PListe.add(TPunkt);
table.revalidate();
table.repaint();
}
});[/Java]
Jetzt stoße ich damit aber an Grenzen:
1. In der eigentlichen Anwendung kommt diese Überprüfung sehr oft vor und dazu noch mit drei bis 9 Feldern.
2. Ich will nicht in jeden Button wieder die ganze Routine reinschreiben, sondern an einem gesonderten Ort und dann im Listener nur noch darauf zugreifen. Eine eigene Klasse ist dafür wohl ein wenig zu hoch gegriffen, oder? Wie kann ich solche "allgemeinen" Routinen am besten unterbringen?
3. Kann ich die Namen der Textfelder in der Überprüfungsroutine nachdem ich sie als Argumente übergeben habe, irgendwie "serialisieren" oder "verzahlen", dass ich die Inhalte mir einer Art von Schleife überprüfen kann?
Danke schon mal