Object auf Double, Int, String testen

Status
Nicht offen für weitere Antworten.

Tallan

Bekanntes Mitglied
Hallo zusammen,

Folgendes Problem, der User gibt in eine JTabelle falsche Daten ein,
z.B. in eine Spalte die Zahlen enthalten soll wird ein String eingetragen.

Das würde ich gerne abfangen und daher den Wert in der Tabelle bzw das Object überprüfen ob es sich um eine Zahl oder z.B um einen String handelt.

Gibt es da eine Möglichkeit?
 
instanzeof
Java:
 Object obj = new Double(200);
     if(obj instanceof Double){
        System.out.println("Double");
     }else if(obj instanceof String){
        ...
     }//

Wobei ich dennke du redest von der setValue Methode des AbstractTabelModels, oder? ich denke die liefert immer String zurück ausser du hast den Editor überschrieben...
 
instanzeof
Java:
 Object obj = new Double(200);
     if(obj instanceof Double){
        System.out.println("Double");
     }else if(obj instanceof String){
        ...
     }//

Wobei ich dennke du redest von der setValue Methode des AbstractTabelModels, oder? ich denke die liefert immer String zurück ausser du hast den Editor überschrieben...

Genau es geht um die getValueAt ... Methode des TableModels, instanceof Double hatte ich schon probiert gab allerdings keine Ausgabe, was logisch wäre sofern alles als String zurückgegeben wird.
Gibt es eine andere alternative das abzufangen?
Ich schreibe die Daten in eine Datenbank und da kracht es wenn der User mißt eingibt.
 
Mit welchem TableModel arbeitest Du? Wenn Du mit AbstractTableModel, DefaultTableModel o.ä.
arbeitest kannst Du mit der Methode
Code:
public Class<?> getColumnClass(int columnIndex)
pro Spalte festlegen welche Einträge gemacht werden dürfen.
In folgendem Bsp. dürfen in Spalte 0 nur Ganzzahlen, in 1 String, in 2 diverse Zahlen... eingetragen werden:
Java:
public Class<?> getColumnClass(int columnIndex) {
	switch (columnIndex) {
		case 0: return Integer.class;
		case 1: return String.class;
		case 2: return Double.class;
		default: return Object.class;
	}
}
 
Mit welchem TableModel arbeitest Du? Wenn Du mit AbstractTableModel, DefaultTableModel o.ä.
arbeitest kannst Du mit der Methode
Code:
public Class<?> getColumnClass(int columnIndex)
pro Spalte festlegen welche Einträge gemacht werden dürfen.
In folgendem Bsp. dürfen in Spalte 0 nur Ganzzahlen, in 1 String, in 2 diverse Zahlen... eingetragen werden:
Java:
public Class<?> getColumnClass(int columnIndex) {
	switch (columnIndex) {
		case 0: return Integer.class;
		case 1: return String.class;
		case 2: return Double.class;
		default: return Object.class;
	}
}

genial das ist noch viel effektiver danke


ich hatte es derweile mit

Java:
try
					{
						
						Integer.parseInt(value);
					}
					catch(NumberFormatException e)
					{
						System.out.println("Kein Integer!");
						e.printStackTrace();
					}

Versucht, hierbei wurde allerdings trotz des catch eine NumberFormatException ausgeworfen weiß jemand warum?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben