Zahlen eingeben

Status
Nicht offen für weitere Antworten.
K

Klaus2

Gast
Hallo
ich habe eine GUI in den ein user Zahlen eingeben soll. Wie zum Beispiel 10 oder 20.5. Wenn er einen Buschstaben eingibt soll eine Fehlermeldung auftauchen. Jetzt habe ich es schon mit Textfeldern versucht Was aber nicht den erwünschten erfolg gehabt hat. Ich habe einen ActionListner genommen und dann folgendes geschrieben

myTextField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
value = Float.valueOf(number.getText());
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(mainFrame,"Please insert a number");

dabei habe ich jetzt zwei Problem. Einmal das ich den Messagedialog immer bekommen wenn ich irgendetwas eingeben, und zum anderen wird der ActinListener nur gefeuert wenn ich die enter Tast drücke. Wenn ich einfach einen Busctaben eingebe passiert nichts.

Gibt es für so ein Problem nicht standard lösungen

Vielen Dank für eure Hilfe schonmal im vorraus

Klaus2
 

mattulla

Bekanntes Mitglied
versuch es mal mit dem KeyListener und dann die Methode keyReleased....hier dann mal der Code wie du einen Fehler abfaengst wenn er denn auftritt:

Code:
	public void keyReleased(KeyEvent arg0) {
		try
		{
			double i = Double.valueOf(textfield.getText());
		}
		catch(NumberFormatException e)
		{
			System.out.println("Hier jetzt deine Fehlerbehandlung");
		}
	}


Hoffe das hilft dir weiter!

Gruss
mattulla
 
K

Klaus2

Gast
Hi

das Problem bei dem Keyreleased Event ist das dann auch "Enter"+"Delte"+ "Back" usw. Eingaben mit ankommen. Die müsste man dann alle ausortieren das ansonsten auch bei diesen Tasten die Fehlerbehandlung Auftritt oder?

Schöne Grüße

Klaus2
 

L-ectron-X

Gesperrter Benutzer
Du kannst jedes Zeichen oder einen String auf Zahlen prüfen.
Dazu gibts in der Klasse Character die Methode isDigit(), die true zurückliefert, wenn das Zeichen eine Zahl ist.
 
K

Klaus2

Gast
Hi

vielen dank das hat mir schonmal weitergeholfen. Das Problem ist das wenn ich nun Enter Drücke oder Delete das diese natürlich bei isDigit nicht mir druntre fallen. Wie kann ich diese denn jetzt bei meinem KeyListener vorher aussortieren?

Schöne Grüße

Klaus2
 

The_S

Top Contributor
Mit KeyEvent.VK_DELETE bekommste den Wert für die Delete Taste und mit KeyEvent.VK_ENTER bekommste den für ein Enter. Das halt dann einfach in ner if-Abfrage vorher ausschließen.
 
K

Klaus2

Gast
Hi

irgendetwas mache ich gewaltig falsch. Genau das habe ich bei mir auch schon vorher ausprobiert aber es funktioniert nicht. Wenn ich diese Ausgaben in meinem Event mache bekomme ich immer false ausgegeben egal was ich drücke. "ENTER" DELTE" oder was auch immer

System.out.println( e.getKeyCode());
System.out.println( e.getKeyChar());
System.out.println( e.getID());
System.out.println( e.getKeyLocation());
System.out.println( e.getModifiers());
System.out.println( e.getModifiersEx());
System.out.println( e.isActionKey());
System.out.println( e.isControlDown());
System.out.println( e.isMetaDown());
System.out.println(e.getKeyCode()==KeyEvent.VK_DECIMAL);
System.out.println(e.getKeyCode()==KeyEvent.VK_ENTER);
System.out.println(e.getKeyCode()==KeyEvent.VK_DELETE);

Bei zum Beispiel "ENTER" kommt:
0


400
0
0
0
false
false
false
false
false
false

Bei zum Beispiel "Entf" kommt:
0

400
0
0
0
false
false
false
false
false
false


Was mache ich Falsch. Ich sehe da einfach nichts was ich anständig auswerten könnte.
Vielen Dank für eure Hilfe und eure Geduld

Schöne Grüße

Klaus2
 

André Uhres

Top Contributor
Klaus2 hat gesagt.:
...ich habe eine GUI in den ein user Zahlen eingeben soll. Wie zum Beispiel 10 oder 20.5.
Wenn er einen Buschstaben eingibt soll eine Fehlermeldung auftauchen...
Code:
//package text;
/*
 * NurNumberDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.text.*;
public class NurNumberDemo extends JFrame {
    public NurNumberDemo() {
        super("Nur Number Demo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(400,300);
        setLocationRelativeTo(null);
        //JComponents erzeugen:
        mainPanel = new JPanel();
        textField1 = new JTextField(10);
        //Layout:
        mainPanel.add(new JLabel("Number: "));
        mainPanel.add(textField1);
        getContentPane().add(mainPanel, BorderLayout.CENTER);
        textField1.setDocument(new NurNumber());
    }
    public static void main(String args[]) {new NurNumberDemo().setVisible(true);}
    private JPanel mainPanel;
    private JTextField textField1;
}
class NurNumber extends PlainDocument {
    public void insertString(int offs, String str, AttributeSet a)
    throws BadLocationException {
        String text = getText(0,offs) + str + getText(offs, getLength()-offs);
        if(text.matches("[-+]?[0-9]*\\.?[0-9]*")){
            super.insertString(offs, str, a);
        }else{
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null,"Please insert a number");
        }
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Swing nur Zahlen im Spinner(Textfeld) eingeben ! AWT, Swing, JavaFX & SWT 16
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
E Eingabe von Zahlen in TextArea AWT, Swing, JavaFX & SWT 2
MrSnake Zahlen in Tabellenzelle zentrieren AWT, Swing, JavaFX & SWT 3
D JavaFX Nur Zahlen in Textfield AWT, Swing, JavaFX & SWT 4
R Low-Res OCR einzelner Buchstaben und mehrstelliger Zahlen - Ideen gesucht AWT, Swing, JavaFX & SWT 2
A Mini-Menu-Schriften. Ein Problem bei hohen DPI Zahlen AWT, Swing, JavaFX & SWT 2
N JavaFX Textfeld nur Zahlen und nur von 5 bis 30 AWT, Swing, JavaFX & SWT 11
J Swing JTable cell-ausrichtung für zahlen mit alternierenden zeilenfarben AWT, Swing, JavaFX & SWT 2
J Swing JButton durch Eingabe von Zahlen in JTextFields aktivieren AWT, Swing, JavaFX & SWT 3
B AWT Mit TextField Zahlen einlesen lassen AWT, Swing, JavaFX & SWT 34
C JList: Sortieren von Zahlen AWT, Swing, JavaFX & SWT 4
B Pop-Up eingabe für Zahlen AWT, Swing, JavaFX & SWT 5
S JTable Float Column fuegt automatisch Punkt hinzu wenn man Zahlen eingibt. AWT, Swing, JavaFX & SWT 21
R Zeichnen von Zahlen in BufferedImage AWT, Swing, JavaFX & SWT 6
S Eingabefeld für die Validierung von Zahlen AWT, Swing, JavaFX & SWT 5
D Zahlen mit nullen in einer Tabelle anzeigen AWT, Swing, JavaFX & SWT 2
Y Zahlen aus einer Textarea auslesen AWT, Swing, JavaFX & SWT 2
V Bei Tab, Zahlen im jTextField markieren. AWT, Swing, JavaFX & SWT 2
F kleine Zahlen/buchstaben mit Java darstellen? AWT, Swing, JavaFX & SWT 3
H Eingabe von Zahlen in JTable und Fokusweitergabe AWT, Swing, JavaFX & SWT 4
S Textfeld mit zahlen AWT, Swing, JavaFX & SWT 3
J JSpinner mit zahlen AWT, Swing, JavaFX & SWT 10
P JSpinner Objekt anstatt Zahlen sollen man Namen auswählen AWT, Swing, JavaFX & SWT 2
J [JFormattedTextField] Nur Zahlen eingebbar AWT, Swing, JavaFX & SWT 3
F Probleme mit Passwortfeld und Zahlen (SWT) AWT, Swing, JavaFX & SWT 2
J Text in ein Textfeld eingeben und speichern AWT, Swing, JavaFX & SWT 27
OlafHD JPasswordField mit Button eingeben AWT, Swing, JavaFX & SWT 4
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
F In Textfeld Kommazahl anzeigen aber ohne Komma eingeben AWT, Swing, JavaFX & SWT 14
T JTextField nur Double werte eingeben AWT, Swing, JavaFX & SWT 2
G JTextfiled - Uhrzeit eingeben AWT, Swing, JavaFX & SWT 3
H JFormattedTextField - Einen Preis eingeben lassen AWT, Swing, JavaFX & SWT 2
G Integer in JTextField eingeben AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben