Swing JTable auswerten

pizza90

Mitglied
Hallo liebe Forengemeinde :)

Ich habe eine Frage zur JTable (hoffe ich bin im richtigen Unterforum gelandet). Nachdem ich mir einige Tutorials dazu angeschaut habe und mich selbst dran Versucht habe, lief es anfangs ganz gut, doch jetzt bin ich an einem Punkt wo ich nicht mehr weiter weiß.

Zu mein Problem:
Ich wollte eine JTable erschaffen und dort Daten aus einem Textfile importieren. Soweit so gut. Doch als ich einige "Auswertungen" darüber starten wollte bekam ich Probleme. Ich habe mir eine JCombobox erstellt und dort feste Werte hinterlegt, die mehrmals in einer Spalte vorkommen können. Ein paar Spalten weiter befinden sich Zahlen werte, von denen ich gerne den Mittelwert bestimmen wollte. Allerdings sollten nur die Zahlen berücksichtig werden, welche in der Vorderen Spalte das angegebende Merkmal aus der JCombobox enthält. Alle versuche sind bei mir gescheitert.
Im kleinen Rahmen hat alles wunderbar funktioniert, nur halt beim einlesen aus dem Textfile scheint es Probleme zu geben.

Ich hoffe ihr könnt mir dabei helfen, anbei der mit der Überprüfungsabfrage Coderauszug:

Java:
bauswerten.addActionListener(
				new ActionListener(){
					public void actionPerformed(ActionEvent evt){
						int size = table.getRowCount();
						double a = 0;
						int anzahl = 0;
						for(int zeile = 0;zeile<size;zeile++){
							if(table.getValueAt(zeile, 4).toString()==box.getSelectedItem().toString()){
							a = a + Double.parseDouble(table.getValueAt(zeile, 9).toString());
							anzahl++;
							}
						}
						a = a/anzahl;
						ausgabe.setText(""+a);
					}
				}
				);

Vorab schonmal Besten Dank für alle Ratschläge :)
 

ARadauer

Top Contributor
table.getValueAt(zeile, 4).toString()==box.getSelectedItem().toString())

mhn... string vergleicht man nicht mit ==, sondern mit equals

und ich würde generell die werte die da raus kommen vergleichen und nicht die toString repräsentation
 

butterbemme

Gesperrter Benutzer
Was erhältst du denn als Ausgabe, sofern du überhaupt eine erhältst? Deine Fehlerbeschreibung ist hier sehr ungenau
 
Zuletzt bearbeitet:

pizza90

Mitglied
Erstmal danke für den Ratschlag, ich werde es bei Gelegenheit mal ausprobieren. Durch mein
a = a/anzahl; erhalte ich immer NaN (schätze mal wegen Division durch 0). Ich habe auch schon probiert, in der If-Anweisung ein einfaches System.out.println() mir auszugeben, jedoch wird der If-Zweig nie angesprochen. Also glaube ich das meine Bedingung falsch gesetzt ist.
Ich fand es merkwürdig, da es in einem kleineren Experiment funktioniert hatte, nur halt jetzt wo ich die Daten über ein txt file importiert habe er die Anweisung nicht mehr ausführt.

ich werde bei nächster Gelgenheit mal den kompletten Quellcode hochladen, vll lässt sich das Problem dort besser verdeutlichen.

Aber danke für eure Unterstützung :)
 

pizza90

Mitglied
Also, ich habe den Code jetzt mal vorbereitet für hier. In diesem Beispiel wird die Tabelle mit Testdaten aus einem txt-File gefüllt und es soll ein "TestOrt" in der Combobox ausgewählt werden, dann soll das Durchschnittsalter von allen Leuten bestimmt werden, die in diesem Ort wohnen.

Java:
package testzwecke;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.table.DefaultTableModel;
import java.io.IOException;


public class datentablletest extends JApplet{
	
	JTextField ausgabe;
	JTable table;
	JButton bauswerten;
	JComboBox auswahlbox;
	DefaultTableModel tablemodel;
	
	
	
		public void init(){
				
			setSize(1100,700);
			setLayout(null);
			
			
			String[][] data = {};
			String[] uschrift = {
					"TestName","TestOrt","Testadresse","TestAlter"
					};
			
			String[] boxdata = {"TestOrt1","TestOrt2","TestOrt3","TestOrt4"};
			
			ausgabe = new JTextField(10);
			tablemodel = new DefaultTableModel(data,uschrift);
			table = new JTable(tablemodel);
			optable.setAutoCreateRowSorter(true);
			bauswerten = new JButton("auswerten");
			try{
				FileReader fr =
				new FileReader("TestDaten.txt");
				BufferedReader leser = new BufferedReader(fr);
				String line = null;
				while((line = leser.readLine()) != null){
				String[] parts = line.split("\\|");
				tablemodel.addRow(parts);}
				}
			catch(IOException ex){
			System.out.println("Fehler");
			}
			
			auswahlbox = new JComboBox(boxdata);
			bauswerten.addActionListener(
					new ActionListener(){
								public void actionPerformed(ActionEvent evt){
								int size = tablemodel.getRowCount();
								double a = 0;
								int anzahl = 0;
								for(int zeile = 0;zeile<size;zeile++){
								if(tablemodel.getValueAt(zeile,1).equals(auswahlbox.getSelectedItem())){
											a = a + Double.parseDouble(
											tablemodel.getValueAt(zeile,3).toString());
											anzahl++;
											
								}
								}
								a = a/anzahl;
								ausgabe.setText(""+a);
								}
								}
								);
			
			
		JScrollPane datenpane= new JScrollPane(table);
		datenpane.setBounds(10, 5, 1000, 500) ;
		auswahlbox.setBounds(10,510 , 75, 30);
		bauswerten.setBounds(90,510,150,30);
		ausgabe.setBounds(245,510,150,30);
		add(datenpane);
		add(auswahlbox);
		add(bauswerten);
		add(ausgabe);
		}
		}
 
Zuletzt bearbeitet:

ARadauer

Top Contributor
Ich fand es merkwürdig, da es in einem kleineren Experiment funktioniert hatte, nur halt jetzt wo ich die Daten über ein txt file importiert habe er die Anweisung nicht mehr ausführt.
Ich finde das nicht merkwürdig ;-) In deinem kleinen Experiment hattest du wahrscheinlich die Strings die du vergleichst irgendwo im Code und Java ist so schlau und cached die intern, somit waren sie das selbe Objekt und == hat funktioniert...

mach mal vor dem vergleich mehr ausgaben...
zb

Java:
		System.out.println("Vergleiche "+tablemodel.getValueAt(zeile,1).getClass()+" -> "+tablemodel.getValueAt(zeile,1).toString());
		System.out.println("mit "+auswahlbox.getSelectedItem().getClass()+" -> "+auswahlbox.getSelectedItem().toString());
oder häng dich einfach mit einem debugger rein
 

pizza90

Mitglied
also ich habe das mal eingefügt und habe dann folgende Meldung bekommen:

Vergleiche class java.lang.String -> TestOrt1
mit class java.lang.String -> TestOrt1

das bedeutet doch, das die beiden Datentypen absolut identisch sind oder? ich verstehe es leider nicht warum er diese dann nicht vergleicht bzw. die If-Anweisung nicht greift :bahnhof:
 

butterbemme

Gesperrter Benutzer
Lass dir doch mal ausgeben was
Java:
Double.parseDouble(tablemodel.getValueAt(zeile,3).toString());

in jedem Schleifendurchlauf so zurückgibt. Lasse dir genau so die Variable a in jedem Durchlauf ausgeben um zu verfolgen welche Werte sie annimmt.

Weiß nicht ob dir das noch was bringt, aber mir is aufgefallen dass a / b mit b=0 zu Infinity führt und nicht zu NaN. Dass bei dir NaN rauskommt, hat also nichts mit Division durch 0 zu tun
 

pizza90

Mitglied
Hey :)

Also ich habe die Funktion nochmal komplett neu geschrieben gehabt... und was soll ich sagen es funktioniert :) ich weiß selber nicht wo der Fehler lag, da mein neuer Quellcode eigentlich so ausschaut wie mein vorheriger. Aber wer weiß vll irgendwo ein kleiner Flüchtigkeitsfehler oder so.

Trotzdem Besten Dank an alle
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N JTable auswerten AWT, Swing, JavaFX & SWT 5
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
T Swing JTable valueChanged datensatz löschen AWT, Swing, JavaFX & SWT 1
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
S Jtable defaultRenderer wohin damit ? AWT, Swing, JavaFX & SWT 23
T Swing JTable / FocusListener AWT, Swing, JavaFX & SWT 0
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
J addRow bei JTable AWT, Swing, JavaFX & SWT 6
M Jtable gibt -1 wert bei selectedRow und Column AWT, Swing, JavaFX & SWT 3
Meeresgott Swing JTable AWT, Swing, JavaFX & SWT 4
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Thallius JTable dynamisch Spaltenanzahl verändern AWT, Swing, JavaFX & SWT 2
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2
B Swing JTable sortieren AWT, Swing, JavaFX & SWT 2
T Swing JTable auslesen und befüllen AWT, Swing, JavaFX & SWT 8
B JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 1
J JTable und Suchlogik AWT, Swing, JavaFX & SWT 4
Viktim Swing JTable mit Tab verlassen AWT, Swing, JavaFX & SWT 1
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
Viktim Swing JTable Mit Tab druch Zeilen Wechseln AWT, Swing, JavaFX & SWT 5
Thallius Warum refrehsed mein JTable nicht? AWT, Swing, JavaFX & SWT 5
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
S Swing JTable - Einzelne Rows einfärben AWT, Swing, JavaFX & SWT 11
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
K JTable getValueAt() klappt nicht immer AWT, Swing, JavaFX & SWT 1
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
P JTable - bei Eingabe Selektion AWT, Swing, JavaFX & SWT 0
P Fokus auf Zelle in JTable AWT, Swing, JavaFX & SWT 1
S Swing Deselektion in JTable verhindern AWT, Swing, JavaFX & SWT 0
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
N Swing Print JTable mit AbstractTableModel AWT, Swing, JavaFX & SWT 1
Ananaskirsche Swing jTable Reihen zuviel eingefügt AWT, Swing, JavaFX & SWT 12
P im JTable die Schriftfarbe ändern AWT, Swing, JavaFX & SWT 19
T Swing JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
S Dreiecke in bestimmte Zellen einer JTable AWT, Swing, JavaFX & SWT 9
LexeB4F Zelle in JTable gezielt einfärben AWT, Swing, JavaFX & SWT 4
LexeB4F JTable mehrere Zelle selektieren und inhalte Löschen.. Ideen gesucht AWT, Swing, JavaFX & SWT 1
D Swing JTable Renderer Grafikfehler AWT, Swing, JavaFX & SWT 0
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
M Swing JTable GroupableHeader Background Color AWT, Swing, JavaFX & SWT 4
K Swing JTable updaten AWT, Swing, JavaFX & SWT 9
thet1983 Swing MySQL >> JTable AWT, Swing, JavaFX & SWT 5
J JTable bounds ändern durch resizing des Fensters AWT, Swing, JavaFX & SWT 9
F JTable Zellen-Hintergrund ändern AWT, Swing, JavaFX & SWT 7
O JTable linksbündig drucken (nicht der Zelleninhalt) AWT, Swing, JavaFX & SWT 2
Crazynet xls Datei in JTable AWT, Swing, JavaFX & SWT 3
O JTable ohne Rahmen printen AWT, Swing, JavaFX & SWT 3
L Swing JTable refresht die Column Namen nicht AWT, Swing, JavaFX & SWT 0
K JTable komplett durch andere ersetzen AWT, Swing, JavaFX & SWT 4
S JTable übernimmt Änderungen nicht AWT, Swing, JavaFX & SWT 2
Y JTable AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben