# Gewählte Zeile aus JTable ausgeben lassen



## rtt (21. Apr 2005)

Hallo,
wie kann man eine ausgewählte Zeile einer JTable ausgeben lassen, also deren Inhalt?
Diese sollen dann in einzelne Textfelder eingetragen werden.

Gruß Robin


----------



## Wildcard (21. Apr 2005)

Na getSelectedRow und dann die Werte holen  :bahnhof:


----------



## rtt (21. Apr 2005)

Wie kann ich denn anhand der zurück gegebenen Zeilenzahl die Werte der Zeile holen? 
Ich hab zusätzlich auch noch einen Button, der standartmäßig deaktiviert ist. Der soll aktiviert werden, sobald ich eine Zeile ausgewählt habe. Wie kann ich das machen?

Danke


----------



## Snape (22. Apr 2005)

rtt hat gesagt.:
			
		

> Wie kann ich denn anhand der zurück gegebenen Zeilenzahl die Werte der Zeile holen?



Hö? Nichts einfacher als das, oder?


```
int iSelectedRow = yourTable.getSelectedRow();
Object yourValue = yourTable.getModel().getValueAt(iSelectedRow, iColumnOfYourWish);
```



> Ich hab zusätzlich auch noch einen Button, der standartmäßig deaktiviert ist. Der soll aktiviert werden, sobald ich eine Zeile ausgewählt habe. Wie kann ich das machen?
> 
> Danke



Dazu würde mir nur ein MouseListener einfallen.


----------



## Wildcard (22. Apr 2005)

Snape hat gesagt.:
			
		

> Dazu würde mir nur ein MouseListener einfallen.


Eine eigene Tabel extends  JTable ist IMHO sinnvoller...


----------



## Snape (22. Apr 2005)

Und wie fängst Du mit einer eigenen JTable die Selektion ab?


----------



## Sky (22. Apr 2005)

Wildcard hat gesagt.:
			
		

> Snape hat gesagt.:
> 
> 
> 
> ...



Dito. Zumindestens sehe ich es als erforderlich an die Methode JTable#valueChanged zu überschreiben, da eine Selektionsänderung auch per Tastatur vorgenommen werden kann.


----------



## Snape (22. Apr 2005)

Wenn aber noch kein value changed wird, sondern nur eine Zeile markiert?


----------



## Sky (22. Apr 2005)

Snape hat gesagt.:
			
		

> Wenn aber noch kein value changed wird, sondern nur eine Zeile markiert?





			
				Die Api (JTable#valueChanged) hat gesagt.:
			
		

> Invoked when the row selection changes -- repaints to show the new selection.


----------



## Snape (22. Apr 2005)

Ups...in diesem Fall Asche auf mein Haupt. Was ich immer sage, wer lesen kann...
(Wobei valueChanged mit dieser Funktionalität ein ziemlich irreführender Begriff ist)


----------



## Wildcard (22. Apr 2005)

Snape hat gesagt.:
			
		

> Ups...in diesem Fall Asche auf mein Haupt. Was ich immer sage, wer lesen kann...
> (Wobei valueChanged mit dieser Funktionalität ein ziemlich irreführender Begriff ist)


Das kommt vom ListSelectionListener Interface. Kann man nichts machen  :wink:


----------



## Guest (25. Apr 2005)

Also ich hab die Daten aus der Tabelle so ausgelesen wie Snape es gesagt hat. Funktioniert gut.
Das mit den aktivieren des Buttons, hab ich über MouseListener gemacht.
Besten Dank euch allen.
Gruß Robin


----------



## rtt (25. Apr 2005)

oh, vergessen einzuloggen


----------



## orbi (9. Mai 2005)

Hoi, 
ich mal wieder. Ich habe eben den Beitrag zum Thema JTables gelesen und er ist ganu das was ich gesucht habe.

Danke schön    

Aber nun hab ich dat Problem das ich am Laufenden Band ne NUllPointerException bekomme   

hier meine getValueAt Anweisung

```
int iSelectedRow = f.tblKinderAnzeige.getSelectedRow();
Object yourValue = f.tblKinderAnzeige.getModel().getValueAt(iSelectedRow, 1);
```

und hier mein JTable


```
DefaultTableModel tblKinderAnzeigeModel = new DefaultTableModel(
							new String[][] { { "One", "Two", "One", "Two", "One" },
								{ "One", "Two", "One", "Two", "One" } },
							new String[] { "Column 1", "Column 2", "Column 3", "Column 4", "Column 5" });
							JTable tblKinderAnzeige = new JTable(tblKinderAnzeigeModel);
							scrlPaneKinder.setViewportView(tblKinderAnzeige);
							tblKinderAnzeige.setModel(tblKinderAnzeigeModel);
							tblKinderAnzeige.setRowSelectionAllowed(true);
```

Die Spaltentitel und Zelleninhalte sind in diesem Beispiel noch egal, hauptsache es kommt was anderes (ambesten der Zelleninhalt), als eine NullPointerException....
Evtl. kann ja mal einer nen Blick drauf werfen und mir sagen wo der Hacken ist.


MFG
Orbi


----------



## Roar (9. Mai 2005)

ich rat mal ins blaue und sag du hast zwei verschiedene variablen tblKinderNazeige


----------



## orbi (9. Mai 2005)

Ist schonmal ein Ansatz ich werde mal den Code durchforsten, aber selbst wenn ich die JTable mehrfach haette , so müsste er doch einen Wert an irgendeiner Position finden, und nicht immer und immer wieder eine NullPointerException geben oder she ich das falsch ??

na denn , schau ich mal weiter ob ich den pösen pösen error finde

Danke nochmal...

MFG
orbi


----------



## orbi (10. Mai 2005)

Ich schon wieder ,

ich hab jetzt mal alle Duplikate der Tabelle aus dem Quellcode entfernt und bin immerhin soweit das er mir "nur noch"  sagt der Index sei -1.

Laut SUN bedeutet das :

Returns the index of the first selected row, -1 if no row is selected. 

also das keine Zeile ausgewählt  wurde was aber nicht der Fall ist. Der naechste Punkt ist das ich zwar den Wert der Zellen auslesen kann aber 2-3 Code Zeilen weiter nicht abfragen kann welche Zeile ausgewählt wurde.

Hier mal mein der entsprechende Codeausschnitt(wenn auch unsauber):


```
if(e.getSource()==f.btnBearbeitenSchuldnerKindBearbeiten)
			{	
			try
			{
			    schuldner =f.txtAnsichtIdent.getText();
				dbVerbindung = DriverManager.getConnection("jdbc:odbc:Landau","","");
				sqlStatement = dbVerbindung.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
				resultSetKinder = sqlStatement.executeQuery("SELECT ID_kind, ID_schule, k_vorname, k_nachname, k_klasse FROM t_kinder Where ID_schuldner = "+schuldner+"");
				resultSetKinder.moveToCurrentRow();
				
				TableModel tblKinderAnzeigeModel1 = new DefaultTableModel( 
		                  new String[][] { , 
		                         }, 
		                  new String[] { "Vorname", "Nachname", "Schule", "Schulkürzel", "Klasse" }); 
		            JTable tblKinderAnzeige4 = new JTable(tblKinderAnzeigeModel1); 
		            f.scrlPaneKinder.setViewportView(tblKinderAnzeige4); 
		 		while (resultSetKinder.next())
				{
					IDkind=resultSetKinder.getString(1);
					IDschule=resultSetKinder.getString(2);
					vorname=resultSetKinder.getString(3);
					nachname=resultSetKinder.getString(4);
					klasse=resultSetKinder.getString(5);
					try
					{
						
						dbVerbindung = DriverManager.getConnection("jdbc:odbc:Landau","","");
						sqlStatement = dbVerbindung.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
						schulAnzeige = sqlStatement.executeQuery("SELECT schu_kurz, schu_name FROM t_schulen Where schu_ID = "+IDschule+"");
						schulAnzeige.moveToCurrentRow();
						while (schulAnzeige.next())
						{
							kindSchulKurz=schulAnzeige.getString(1);
							kindSchulName=schulAnzeige.getString(2);
						}
					}
					catch(SQLException es)
					{
					    System.out.println("fehler beim sql"+es);
					}
					((DefaultTableModel)tblKinderAnzeigeModel1).addRow( new String[] {  vorname, nachname, kindSchulKurz, kindSchulName, klasse }); 
				}
				
				int iSelectedRow = tblKinderAnzeige4.getSelectedRow();
				int iSelectedCol = tblKinderAnzeige4.getSelectedColumn();
				System.out.println(iSelectedRow);
				System.out.println(iSelectedCol);
                Object yourValue = tblKinderAnzeige4.getModel().getValueAt(0,0); 
                System.out.println(yourValue);				
			
			}
			catch(NullPointerException n)
			{
				System.out.println("nullpointer1 "+n);
			}
			catch(SQLException es)
			{System.out.println("fehler beim sql"+es);}
			
		}
```

Ich weiss so langsam echt nicht mehr weiter , kann mir bitte einer den gefallen tun und mir sagen das ich doof bin und die Lösung ja ganz einfach ist.
UND !!!  mir die Lösung dann auch noch verraten ????

MFG
der orbi


----------



## orbi (11. Mai 2005)

Letzten Endes ist es doch immer wieder toll sich über die eigene Unfähigkeit zu wundern.

Das Problem war in meiner Logik, ich wollte aus einer Table die ich auf Knopfdruck grade erstellt hatte einen Selektierten wert auslesen was natuerlich voll in die Hose geht da die Table ja eben erst erstellt wurde.....

Das naechste Problem war wie ein freundlicher besucher des Forums es schon ahnte das mehrfachvorhandensein ein und der selben JTable ..  :applaus: 

Na denn ich wünsche euch einen Bugfreien Tag und viel Spass beim proggen....

MFG
orbi


----------

