eine Aktion auslösen mit einem Texfeld1

abdel152

Grünschnabel
Hi,

das Problem besteht darin ,dass ich eine Gui-Oberfläche habe, die Textfelder enthält.Ich habe eine Bedingung,die unbedingt erfüllt sein muss und zwar ,wenn man eine Zahl zwischen >500 oder <0 über ein Textfeld eingibt. Also wenn ich eine Zahl mit der obergennante Bedingung eingebe muss sich eine Fehlermeldung auslösen Z.B(zahl nich gültig).Wie lasse ich diese event auslösen

Danke im Voraus:)
 
Zuletzt bearbeitet:
Ich würde es mit einer try and catch Verschachtelung versuchen.

try{
überprüfe mit einer if abfrage ob die Eingabe richtig ist!
wenn ja dann du das und das...

}catch (FehlerExeption definieren){
Deine dialogfenster öffnet sich.
}
 
Würde auch spontan an einen JSpinner denken

Java:
SpinnerNumberModel model = new SpinnerNumberModel(1, 0, 500, 1);

JSpinner spinner = new JSpinner(model);
 
Und wie beschränke ich nun den JSpinner nur auf Zahlen/Nummern zu reagieren? Der Anwender kann ja auch wild auf seine Tasten hämmern und versehentlich einen Buchstaben erwischen. ? Kann ich das ding so setzen das der Benutzer keine direkte Eingabe tätigen kann? damit meine ich das er nicht reinreifen soll.
 
Hallo,

nö der hat nur den ChangeListener zu bieten.

Wenn du auf dein Textfeld bestehst und schon bei der Eingabe unzulässige Zeichen
blocken willst gibt es eine, zugegeben etwas umständliche Methode dafür.

Du kannst das Editable eines Textfeldes auf false setzen und trotzdem KeyEvents empfangen. Du musst dann aber alle erlaubten Tasten verarbeiten dein Textfeld selbst
mit setText aktualisieren und beim Enter selbst das ActionEvent feuern !

Wie gesagt, sehr umständlich, funktioniert aber !

Gruß JAdix
 
Ich kümmere mich ja um die falsch eingaben, diese sind ja durch die Zahlen Klasse nicht möglich. Wie bastle ich nun einen JSpinner ein? Das Model soll von 0 bis 100 in einer schritten gehen und bei 10 anfangen.

Code:
JTextField jtf = new JTextField();		
                jtf.addActionListener(optionen);
                jtf.setDocument(new Zahlen());

Code:
import java.awt.Toolkit;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class Zahlen extends PlainDocument {
	private static final long serialVersionUID = 1L;

	public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException {
		
		try {
			Integer.parseInt(s);
			
		} catch (Exception ex)
		{
			Toolkit.getDefaultToolkit().beep(); 
			return;
		}
		super.insertString(offset, s, attributeSet);
	}
}
 
Zuletzt bearbeitet:
Zurück