JTable aktualisieren

BigMac

Mitglied
Ich weiß das thema wurde oft behandelt aber ich habe mit einer 6Stündigen suche in Google und diesem Forum keine Antwort gefunden.

Ich habe eine Tabelle mit daten aus einer MySQL DB. Dazu 3 Buttons zum Speichern, Verändern und Suchen von Adressen in der Datenbank.
Wenn ich jetzt über die Tabelle oder Sufu eine Adresse aussuche und verändere soll die Veränderung in der JTable angezeigt werden. Ich habe es mit .repaint() .revalidate() fireTableDataChanged(oder wie auch immer)

Hier der Code:
Java:
package adressbuch;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;


public class AdressBuch extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6950577656155165307L;
	private JFrame frmAdressbuch;
	private JTextField nameField;
	private JTextField vnameField;
	private JTextField knrField;
	private JTextField strField;
	private JTextField nrField;
	private JTextField plzField;
	private JTextField stdField;
	private JTextField telField;
	private JTextField mailField;
	private JTable table;
	private static Statement stmt;
	static String sp;
	static String ae;
	static String su;
	static String sql;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
//		EventQueue.invokeLater(new Runnable() {
//			public void run() {
//				try {
//					AdressBuch window = new AdressBuch();
//					window.frmAdressbuch.setVisible(true);
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//		});
		String user = "root";
		String pw = "";
		String url = "jdbc:mysql://localhost/adressen";


		Class.forName("com.mysql.jdbc.Driver");		
		
		Connection  con = DriverManager.getConnection(url,user,pw);

		stmt = con.createStatement();

		
		AdressBuch window = new AdressBuch();
		window.frmAdressbuch.setVisible(true);
		

		System.out.println("Gui läuft");
	}


	/**
	 * Initialize the contents of the frame.
	 * @ 
	 */
	public  AdressBuch( ) {
		
		frmAdressbuch = new JFrame();
		frmAdressbuch.setTitle("Adressbuch");
		frmAdressbuch.setBounds(100, 100, 565, 600);
		frmAdressbuch.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmAdressbuch.getContentPane().setLayout(null);
		
		JLabel lblNewLabel = new JLabel("Name");
		lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel.setBounds(10, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("Vorname");
		lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_1.setBounds(210, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_1);
		
		JLabel lblNewLabel_2 = new JLabel("Kundennr.");
		lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_2.setBounds(10, 60, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_2);
		
		JLabel lblNewLabel_3 = new JLabel("Strasse");
		lblNewLabel_3.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_3.setBounds(10, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_3);
		
		JLabel lblNewLabel_4 = new JLabel("Nr.");
		lblNewLabel_4.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_4.setBounds(210, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_4);
		
		JLabel lblNewLabel_5 = new JLabel("PLZ");
		lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_5.setBounds(10, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_5);
		
		JLabel lblNewLabel_6 = new JLabel("Stadt");
		lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_6.setBounds(210, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_6);
		
		JLabel lblNewLabel_7 = new JLabel("Telefon");
		lblNewLabel_7.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_7.setBounds(10, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_7);
		
		JLabel lblNewLabel_8 = new JLabel("E-Mail");
		lblNewLabel_8.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_8.setBounds(210, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_8);
		
		nameField = new JTextField();
		nameField.setBounds(90, 20, 100, 20);
		frmAdressbuch.getContentPane().add(nameField);
		nameField.setColumns(10);
		
		vnameField = new JTextField();
		vnameField.setBounds(290, 20, 100, 20);
		frmAdressbuch.getContentPane().add(vnameField);
		vnameField.setColumns(10);
		
		knrField = new JTextField();
		knrField.setBounds(90, 60, 100, 20);
		frmAdressbuch.getContentPane().add(knrField);
		knrField.setColumns(10);
		
		strField = new JTextField();
		strField.setBounds(90, 100, 100, 20);
		frmAdressbuch.getContentPane().add(strField);
		strField.setColumns(10);
		
		nrField = new JTextField();
		nrField.setBounds(290, 100, 40, 20);
		frmAdressbuch.getContentPane().add(nrField);
		nrField.setColumns(10);
		
		plzField = new JTextField();
		plzField.setBounds(90, 140, 100, 20);
		frmAdressbuch.getContentPane().add(plzField);
		plzField.setColumns(10);
		
		stdField = new JTextField();
		stdField.setBounds(290, 140, 100, 20);
		frmAdressbuch.getContentPane().add(stdField);
		stdField.setColumns(10);
		
		telField = new JTextField();
		telField.setBounds(90, 180, 100, 20);
		frmAdressbuch.getContentPane().add(telField);
		telField.setColumns(10);
		
		mailField = new JTextField();
		mailField.setBounds(290, 180, 100, 20);
		frmAdressbuch.getContentPane().add(mailField);
		mailField.setColumns(10);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(10, 220, 530, 20);
		frmAdressbuch.getContentPane().add(separator);
		
		JButton btnSpeichern = new JButton("Speichern");
		btnSpeichern.setBounds(445, 40, 95, 20);
		btnSpeichern.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				sp = "INSERT INTO adressen (knr,name,vname,str,nr,plz,std,tel,mail) VALUES ('"	       
	        + knrField.getText() 
	        + "','"  
	        + nameField.getText() 
	        + "','" 
	        + vnameField.getText() 
	        + "','" 
	        + strField.getText()
	        + "','" 
	        + nrField.getText()
	        + "','" 
	    	+ plzField.getText()
	    	+ "','" 
	        + stdField.getText()
	        + "','" 
	        + telField.getText()
	        + "','" 
	        + mailField.getText()
	        + "')"; 
				System.out.println(""+sp);
				try {
					int rs = stmt.executeUpdate(sp);
					
					System.out.println(""+rs);
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}
		});
		frmAdressbuch.getContentPane().add(btnSpeichern);
		
		JButton btnAendern = new JButton("\u00C4ndern");
		btnAendern.setBounds(445, 100, 95, 20);
		btnAendern.addActionListener(new ActionListener() {



			@Override
			public void actionPerformed(ActionEvent e) {

				ae = "UPDATE adressen SET name ='"	        
	        + nameField.getText() 
	        + "', vname ='" 
	        + vnameField.getText() 
	        + "', str ='" 
	        + strField.getText()
	        + "', nr ='" 
	        + nrField.getText()
	        + "', plz ='" 
	    	+ plzField.getText()
	    	+ "', std ='" 
	        + stdField.getText()
	        + "', tel ='" 
	        + telField.getText()
	        + "', mail ='" 
	        + mailField.getText()
	        + "' WHERE knr ='"
	        + knrField.getText()
	        + "';";
			
				
	         
				System.out.println(""+ae);
				try {
					int rs = stmt.executeUpdate(ae);
					
					System.out.println(""+rs);
					
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}			
			
		});
		frmAdressbuch.getContentPane().add(btnAendern);		
		
		
		JButton btnSuchen = new JButton("Suchen");
		btnSuchen.setBounds(445, 160, 95, 20);
		btnSuchen.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				su = "SELECT*FROM adressen WHERE knr='"	       
	        + knrField.getText() 
	        + "';";				
	        
				System.out.println(""+su);
				try {
					ResultSet rs = stmt.executeQuery(su);
					
					System.out.println(""+rs);
					
					while (rs.next()){
						String n = rs.getString(2);
						n= rs.getString("name");
						nameField.setText(n);
						
						String vn = rs.getString(3);
						vn= rs.getString("vname");
						vnameField.setText(vn);
						
						String st = rs.getString(4);
						st= rs.getString("str");
						strField.setText(st);
						
						String nr = rs.getString(5);
						nr= rs.getString("nr");
						nrField.setText(nr);
						
						String pl = rs.getString(6);
						pl= rs.getString("plz");
						plzField.setText(pl);
						
						String sd = rs.getString(7);
						sd= rs.getString("std");
						stdField.setText(sd);
						
						String te = rs.getString(8);
						te= rs.getString("tel");
						telField.setText(te);
						
						String ma = rs.getString(9);
						ma= rs.getString("mail");
						mailField.setText(ma);
						
					}
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}
		});
		
		frmAdressbuch.getContentPane().add(btnSuchen);		
			// Tabelle
			Vector<String> columnNames = new Vector<String>();
	        Vector<Vector> data = new Vector<Vector>();
	        String sql = "SELECT * FROM adressen";

	        try {	        	
				ResultSet as = stmt.executeQuery(sql);	        	
				ResultSetMetaData md = as.getMetaData();
	        	
				int columns = md.getColumnCount();
				for (int i = 2; i <= columns; i++){
					columnNames.addElement(md.getColumnName(i));
				}
				while (as.next()){
					Vector<Object> row = new Vector<Object>(columns);
	                
	                for (int i = 2; i <= columns; i++) {
	                    row.addElement( as.getObject(i) );
	                }
	                data.addElement(row);
	                
				}
			} catch (SQLException e1) {
				
				e1.printStackTrace();
			}
	        
	        table = new JTable(data, columnNames);
	        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
	        table.setPreferredScrollableViewportSize(new Dimension(800,300));
	        table.setPreferredSize(new Dimension(800,300));
	        table.setSize(new Dimension(800,300));	        			
	        JScrollPane scrollPane =  new JScrollPane();
	        scrollPane.setBounds(10, 250, 530, 300);	        
	        scrollPane.getViewport().add(table);
	        
	        table.addMouseListener(new MouseAdapter() {
	        	
	        	@Override
	        	public void mouseClicked(MouseEvent e) {	        		
	        		
	        		int row = table.getSelectedRow();
	        		
	        		Object knr =table.getModel().getValueAt(row, 0);
	        		String a =knr.toString();
	        		knrField.setText(a);
	        		
	        		Object name =table.getModel().getValueAt(row, 1);
	        		String b =name.toString();
	        		nameField.setText(b);
	        		
	        		Object vname =table.getModel().getValueAt(row, 2);
	        		String c =vname.toString();
	        		vnameField.setText(c);
	        		
	        		Object str =table.getModel().getValueAt(row, 3);
	        		String d =str.toString();
	        		strField.setText(d);
	        		
	        		Object nr =table.getModel().getValueAt(row, 4);
	        		String t =nr.toString();
	        		nrField.setText(t);
	        		
	        		Object plz =table.getModel().getValueAt(row, 5);
	        		String f =plz.toString();
	        		plzField.setText(f);
	        		
	        		Object std =table.getModel().getValueAt(row, 6);
	        		String g =std.toString();
	        		stdField.setText(g);
	        		
	        		Object tel =table.getModel().getValueAt(row, 7);
	        		String h =tel.toString();
	        		telField.setText(h);
	        		
	        		Object mail =table.getModel().getValueAt(row, 8);
	        		String i =mail.toString();
	        		mailField.setText(i);
	        		
	            }        	
			});	        
	        frmAdressbuch.getContentPane().add(scrollPane);
	        
	        
	}


	   		
}
mfg
Mac
 
S

SlaterB

Gast
geht es um btnSuchen?
von Zeile 285 bis 334 im zugehörigen ActionListener wird an keiner einzigen Stelle irgendwie versucht, mit der JTable irgendwas zu machen?!
was hast du denn etwa unter fireTableDataChanged() an Vorstellungen? auch nirgendwo im Quellcode..

ein Weg wäre, sämtliche Daten zu eine neuen TableModel zusammenzufügen und das in der JTable zu setzen

etwa
Transfer a ResultSet to a JTable - Real's Java How-to
 

BigMac

Mitglied
danke für die schnelle antwort.
Es geht um den btnAendern. Ich weiß nicht was ich mit ihm anstellen soll, dass er die Tabelle aktualisiert.
 
S

SlaterB

Gast
mein vorheriges Posting enthielt die vollständige Antwort,
du zwingst mich entweder dies hier rein zu wiederholen/ darauf hinzuweisen oder für immer zu schweigen..

immer überlegen was das Thema ist, was die nächste Antwort sein soll, ob alle Fragen, alle Hinweise angemessen berücksichtigt sind usw.
 

BigMac

Mitglied
Java:
Vector<String> columnNames = new Vector<String>();
	        Vector<Vector> data = new Vector<Vector>();
	        String sql = "SELECT * FROM adressen";

	        try {	        	
				ResultSet as = stmt.executeQuery(sql);	        	
				ResultSetMetaData md = as.getMetaData();
	        	
				int columns = md.getColumnCount();
				for (int i = 2; i <= columns; i++){
					columnNames.addElement(md.getColumnName(i));
				}
				while (as.next()){
					Vector<Object> row = new Vector<Object>(columns);
	                
	                for (int i = 2; i <= columns; i++) {
	                    row.addElement( as.getObject(i) );
	                }
	                data.addElement(row);
	                
				}
			} catch (SQLException e1) {
				
				e1.printStackTrace();
			}

ist ungefähr das gleiche wie das was du gepostet hast.
Die Daten sind bereits in der Tabelle ich will nur die daten aktualisieren.

Ich glaub (wenn das überhaupt möglich ist) die einfachste Lösung wäre, die querry der tabelle
Java:
ResultSet as = stmt.executeQuery(sql);	        	
				ResultSetMetaData md = as.getMetaData();
alle paar milisekunden neu ausführen zu lassen.
 
S

SlaterB

Gast
auch wenn ich damit schon wieder meckern muss:
ist aktuell eine Frage offen?

für den Punkt 'alle paar milisekunden neu ausführen' ist bisher keine Grundlage vorhanden/ kein Thema gewesen, jedenfalls nicht mir bewußt,
geht es dir um ständiges Live-Bild des DB-Zustandes? ziemlich ungewöhnlich und aufwendig, nicht zu empfehlen
 

BigMac

Mitglied
ein Weg wäre, sämtliche Daten zu eine neuen TableModel zusammenzufügen und das in der JTable zu setzen

Ich will die Daten nicht einfügen, denn das hab ich schon. Ic will das die veränderungen in der Datenbank auf dem MySQL Server, in der Tabelle angezeigt werden ohne das Programm neu zu starten.
 

bERt0r

Top Contributor
Dann musst du die Daten aktualisieren. Von selber kommen die nicht von der Datenbank in die JTable. Generell schreibt man so einen DB Code nicht in die ActionListener sondern legt entweder gleich eine eigene Klasse an, zumindest aber eine eigene Funktion pro Abfrage.
 
C

Camino

Gast
Ich will die Daten nicht einfügen, denn das hab ich schon. Ic will das die veränderungen in der Datenbank auf dem MySQL Server, in der Tabelle angezeigt werden ohne das Programm neu zu starten.

Und genau das macht man üblicherweise über ein TableModel, d.h. du holst dir die Daten aus der DB in das Model und das Model zeigt diese Daten dann in der JTable an. Wenn du Daten ändern möchtest, änderst du die im TableModel, welches die Änderungen an die DB schickt und auch die JTable aktualisiert.

Wenn du dein Programm noch erweitern möchtest, würde ich dir raten, nicht alles in eine Klasse zu stecken, sondern aufzuteilen (MVC). Am besten auch eine eigene Klasse, welche die Adressdaten darstellt.
 
S

SlaterB

Gast
Ich will die Daten nicht einfügen, denn das hab ich schon. Ic will das die veränderungen in der Datenbank auf dem MySQL Server, in der Tabelle angezeigt werden ohne das Programm neu zu starten.

genau das geht dadurch, die Daten aus der DB zu laden, in einem neuen TableModel zusammenzufügen und das in der JTable zu setzen,

ich kann leider nicht weiter erklären inwiefern das NICHT 'Daten in die DB einfügen ist', denn das entbehrt jeder Grundlage, siehe auch den Code,
einfach nur Daten anzeigen, siehe Code

(sorry wenn auch dieses Postings nach Gemecker aussieht, du musst die Serie durchstehen ;) )
 

BigMac

Mitglied
Und genau das macht man üblicherweise über ein TableModel, d.h. du holst dir die Daten aus der DB in das Model und das Model zeigt diese Daten dann in der JTable an. Wenn du Daten ändern möchtest, änderst du die im TableModel, welches die Änderungen an die DB schickt und auch die JTable aktualisiert.

Danke. Jetzt komm ich der Sache immer näher.
Ich ändere die Daten ja nicht in der Tabelle sondern in der Datenbank.
D.h. die Tabelle muss nach jeder änderung neu generiert werden.

Das ist mein erstes Programm, deswegen ist er auch so klumpig. :D
Ich arbeite schon seit 2 Wochen daran (ic bring mir java selbst bei).
 

BigMac

Mitglied
Java:
Vector<String> columnNames = new Vector<String>();
	        Vector<Vector> data = new Vector<Vector>();
	        String sql = "SELECT * FROM adressen";

	        try {	        	
				ResultSet as = stmt.executeQuery(sql);	        	
				ResultSetMetaData md = as.getMetaData();

	        	
				int columns = md.getColumnCount();
				for (int i = 2; i <= columns; i++){
					columnNames.addElement(md.getColumnName(i));
				}
				while (as.next()){
					Vector<Object> row = new Vector<Object>(columns);
	                
	                for (int i = 2; i <= columns; i++) {
	                    row.addElement( as.getObject(i) );
	                }
	                data.addElement(row);
	                
				}
			} catch (SQLException e1) {
				
				e1.printStackTrace();
			}
	        
	        table = new JTable(data, columnNames);
	        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
	        table.setPreferredScrollableViewportSize(new Dimension(800,300));
	        table.setPreferredSize(new Dimension(800,300));
	        table.setSize(new Dimension(800,300));	        			
	        JScrollPane scrollPane =  new JScrollPane();
	        scrollPane.setBounds(10, 250, 530, 300);	        
	        scrollPane.getViewport().add(table);

ich dachte damit wäre es getan. Die daten werden angezeigt, aber nicht verändert. Muss ich zusätzlich dazu ein Table model erstellen( new DefaultTableModel)?
 
S

SlaterB

Gast
im Listener, genau zu einem Zeitpunkt X, musst du die aktuellen Daten laden, ein neues Model zusammenstellen, und in der JTable setzen
 
C

Camino

Gast

BigMac

Mitglied
sry dass ich nerv, aber was meinst du mit zum zeitpunkt x und in der tabelle setzen?
soll ich die tabelle im ActionListener von dem Button erstellen?
 
S

SlaterB

Gast
wenn du im Listener eine neue Tabelle erstellen solltest, hätte ich das doch geschrieben oder?
ist ein Satz wie
"im Listener, genau zu einem Zeitpunkt X, musst du die aktuellen Daten laden, ein neues Model zusammenstellen, und in der JTable setzen"
bzw. in den vorherigen Varianten nicht in deutscher Sprache relativ eindeutig verständlich?

da kann man doch meiner Ansicht nach herauslesen, ob das vorhandene Model verändert oder ein neues Model erstellt werden soll
(grundsätzlich geht durchaus beides, eins davon hier vorgeschlagen),
da kann man doch meiner Ansicht nach herauslesen, ob die vorhandene Table verändert oder eine neue Table erstellt werden soll
(neue Table reichlich ungünstige, keine echte Option)

letzlich kannst du auch beides einfach mal ausprobieren, recht schnell Erkenntnisse gewinnen, was geht ;)
 

BigMac

Mitglied
Das funktioniert alles nicht
hier der code, wo hab ich fehler gemacht
Java:
package adressbuch;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;


public class AdressBuch extends JFrame implements TableModelListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6950577656155165307L;
	private JFrame frmAdressbuch;
	private JTextField nameField;
	private JTextField vnameField;
	private JTextField knrField;
	private JTextField strField;
	private JTextField nrField;
	private JTextField plzField;
	private JTextField stdField;
	private JTextField telField;
	private JTextField mailField;
	private JTable table;
	private static  Statement stmt;
	static String sp;
	static String ae;
	static String su;
	static String sql;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
//		EventQueue.invokeLater(new Runnable() {
//			public void run() {
//				try {
//					AdressBuch window = new AdressBuch();
//					window.frmAdressbuch.setVisible(true);
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//		});
		String user = "root";
		String pw = "";
		String url = "jdbc:mysql://localhost/adressen";


		Class.forName("com.mysql.jdbc.Driver");		
		
		Connection  con = DriverManager.getConnection(url,user,pw);

		stmt = con.createStatement();

		
		AdressBuch window = new AdressBuch();
		window.frmAdressbuch.setVisible(true);
		

		System.out.println("Gui läuft");
	}


	/**
	 * Initialize the contents of the frame.
	 * @ 
	 */
	public  AdressBuch( ) {
		
		frmAdressbuch = new JFrame();
		frmAdressbuch.setTitle("Adressbuch");
		frmAdressbuch.setBounds(100, 100, 565, 600);
		frmAdressbuch.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmAdressbuch.getContentPane().setLayout(null);
		
		JLabel lblNewLabel = new JLabel("Name");
		lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel.setBounds(10, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("Vorname");
		lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_1.setBounds(210, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_1);
		
		JLabel lblNewLabel_2 = new JLabel("Kundennr.");
		lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_2.setBounds(10, 60, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_2);
		
		JLabel lblNewLabel_3 = new JLabel("Strasse");
		lblNewLabel_3.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_3.setBounds(10, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_3);
		
		JLabel lblNewLabel_4 = new JLabel("Nr.");
		lblNewLabel_4.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_4.setBounds(210, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_4);
		
		JLabel lblNewLabel_5 = new JLabel("PLZ");
		lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_5.setBounds(10, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_5);
		
		JLabel lblNewLabel_6 = new JLabel("Stadt");
		lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_6.setBounds(210, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_6);
		
		JLabel lblNewLabel_7 = new JLabel("Telefon");
		lblNewLabel_7.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_7.setBounds(10, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_7);
		
		JLabel lblNewLabel_8 = new JLabel("E-Mail");
		lblNewLabel_8.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_8.setBounds(210, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_8);
		
		nameField = new JTextField();
		nameField.setBounds(90, 20, 100, 20);
		frmAdressbuch.getContentPane().add(nameField);
		nameField.setColumns(10);
		
		vnameField = new JTextField();
		vnameField.setBounds(290, 20, 100, 20);
		frmAdressbuch.getContentPane().add(vnameField);
		vnameField.setColumns(10);
		
		knrField = new JTextField();
		knrField.setBounds(90, 60, 100, 20);
		frmAdressbuch.getContentPane().add(knrField);
		knrField.setColumns(10);
		
		strField = new JTextField();
		strField.setBounds(90, 100, 100, 20);
		frmAdressbuch.getContentPane().add(strField);
		strField.setColumns(10);
		
		nrField = new JTextField();
		nrField.setBounds(290, 100, 40, 20);
		frmAdressbuch.getContentPane().add(nrField);
		nrField.setColumns(10);
		
		plzField = new JTextField();
		plzField.setBounds(90, 140, 100, 20);
		frmAdressbuch.getContentPane().add(plzField);
		plzField.setColumns(10);
		
		stdField = new JTextField();
		stdField.setBounds(290, 140, 100, 20);
		frmAdressbuch.getContentPane().add(stdField);
		stdField.setColumns(10);
		
		telField = new JTextField();
		telField.setBounds(90, 180, 100, 20);
		frmAdressbuch.getContentPane().add(telField);
		telField.setColumns(10);
		
		mailField = new JTextField();
		mailField.setBounds(290, 180, 100, 20);
		frmAdressbuch.getContentPane().add(mailField);
		mailField.setColumns(10);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(10, 220, 530, 20);
		frmAdressbuch.getContentPane().add(separator);
		
		JButton btnSpeichern = new JButton("Speichern");
		btnSpeichern.setBounds(445, 40, 95, 20);
		btnSpeichern.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				sp = "INSERT INTO adressen (knr,name,vname,str,nr,plz,std,tel,mail) VALUES ('"	       
	        + knrField.getText() 
	        + "','"  
	        + nameField.getText() 
	        + "','" 
	        + vnameField.getText() 
	        + "','" 
	        + strField.getText()
	        + "','" 
	        + nrField.getText()
	        + "','" 
	    	+ plzField.getText()
	    	+ "','" 
	        + stdField.getText()
	        + "','" 
	        + telField.getText()
	        + "','" 
	        + mailField.getText()
	        + "')"; 
				System.out.println(""+sp);
				try {
					int rs = stmt.executeUpdate(sp);
					
					System.out.println(""+rs);
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}
		});
		frmAdressbuch.getContentPane().add(btnSpeichern);
		
		JButton btnAendern = new JButton("\u00C4ndern");
		btnAendern.setBounds(445, 100, 95, 20);
		btnAendern.addActionListener(new ActionListener() {



			@Override
			public void actionPerformed(ActionEvent e) {

				ae = "UPDATE adressen SET name ='"	        
	        + nameField.getText() 
	        + "', vname ='" 
	        + vnameField.getText() 
	        + "', str ='" 
	        + strField.getText()
	        + "', nr ='" 
	        + nrField.getText()
	        + "', plz ='" 
	    	+ plzField.getText()
	    	+ "', std ='" 
	        + stdField.getText()
	        + "', tel ='" 
	        + telField.getText()
	        + "', mail ='" 
	        + mailField.getText()
	        + "' WHERE knr ='"
	        + knrField.getText()
	        + "';";
			
				
	         
				System.out.println(""+ae);
				try {
					int rs = stmt.executeUpdate(ae);
					
					System.out.println(""+rs);
					
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}			
			}			
			
		});
		frmAdressbuch.getContentPane().add(btnAendern);		
		
		
		JButton btnSuchen = new JButton("Suchen");
		btnSuchen.setBounds(445, 160, 95, 20);
		btnSuchen.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				su = "SELECT*FROM adressen WHERE knr='"	       
	        + knrField.getText() 
	        + "';";				
	        
				System.out.println(""+su);
				try {
					ResultSet rs = stmt.executeQuery(su);
					
					System.out.println(""+rs);
					
					while (rs.next()){
						String n = rs.getString(2);
						n= rs.getString("name");
						nameField.setText(n);
						
						String vn = rs.getString(3);
						vn= rs.getString("vname");
						vnameField.setText(vn);
						
						String st = rs.getString(4);
						st= rs.getString("str");
						strField.setText(st);
						
						String nr = rs.getString(5);
						nr= rs.getString("nr");
						nrField.setText(nr);
						
						String pl = rs.getString(6);
						pl= rs.getString("plz");
						plzField.setText(pl);
						
						String sd = rs.getString(7);
						sd= rs.getString("std");
						stdField.setText(sd);
						
						String te = rs.getString(8);
						te= rs.getString("tel");
						telField.setText(te);
						
						String ma = rs.getString(9);
						ma= rs.getString("mail");
						mailField.setText(ma);
						
					}
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}
		});
		
		frmAdressbuch.getContentPane().add(btnSuchen);		
			// Tabelle
		
			String[] titles = new String[]{"Kundennr.","Name","Vorname","Strasse", "Nr", "Stadt", "PLZ", "Telefon", "E-Mail"};
			Vector<Vector> data = new Vector<Vector>();
			final DefaultTableModel model = new DefaultTableModel(titles,0);
			String sql = "SELECT * FROM adressen";
			try {	        	
				ResultSet as = stmt.executeQuery(sql);	        	
				ResultSetMetaData md = as.getMetaData();
	        	
				int columns = md.getColumnCount();
				
				while (as.next()){
					Vector<Object> row = new Vector<Object>(columns);
	                
	                for (int i = 2; i <= columns; i++) {
	                    row.addElement( as.getObject(i) );
	                }
	                model.addRow(row);
	                
				}
			} catch (SQLException e1) {
				
				e1.printStackTrace();
			}
			
			
				
				
			
			
			
			
			
			final JTable table = new JTable(model);
	        
	        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//	        table.setPreferredScrollableViewportSize(new Dimension(800,300));
//	        table.setPreferredSize(new Dimension(750,300));
	        table.setSize(new Dimension(800,300));	        			
	        JScrollPane scrollPane =  new JScrollPane();
	        scrollPane.setBounds(10, 250, 530, 300);	        
	        scrollPane.getViewport().add(table);
	        
	        table.addMouseListener(new MouseAdapter() {
	        	
	        	@Override
	        	public void mouseClicked(MouseEvent e) {	        		
	        		
	        		int row = table.getSelectedRow();
	        		
	        		Object knr =table.getModel().getValueAt(row, 0);
	        		String a =knr.toString();
	        		knrField.setText(a);
	        		
	        		Object name =table.getModel().getValueAt(row, 1);
	        		String b =name.toString();
	        		nameField.setText(b);
	        		
	        		Object vname =table.getModel().getValueAt(row, 2);
	        		String c =vname.toString();
	        		vnameField.setText(c);
	        		
	        		Object str =table.getModel().getValueAt(row, 3);
	        		String d =str.toString();
	        		strField.setText(d);
	        		
	        		Object nr =table.getModel().getValueAt(row, 4);
	        		String t =nr.toString();
	        		nrField.setText(t);
	        		
	        		Object plz =table.getModel().getValueAt(row, 5);
	        		String f =plz.toString();
	        		plzField.setText(f);
	        		
	        		Object std =table.getModel().getValueAt(row, 6);
	        		String g =std.toString();
	        		stdField.setText(g);
	        		
	        		Object tel =table.getModel().getValueAt(row, 7);
	        		String h =tel.toString();
	        		telField.setText(h);
	        		
	        		Object mail =table.getModel().getValueAt(row, 8);
	        		String i =mail.toString();
	        		mailField.setText(i);
	        		
	            }        	
			});	        
	        frmAdressbuch.getContentPane().add(scrollPane);
	        table.getModel().addTableModelListener(this);
	        
	        
	}


	@Override
	public void tableChanged(TableModelEvent e) {
		int row = e.getFirstRow();
        int column = e.getColumn();
        TableModel model = (TableModel)e.getSource();
        String columnName = model.getColumnName(column);
        Object data = model.getValueAt(row, column);
        TableModelEvent(TableModelEvent.UPDATE);
	}


	


	   		
}
 
S

SlaterB

Gast
hmm, was ist denn der Plan?
die Listener, ob von Suchen oder Ändern, scheinen weiter unberührt,
sind die Zeilen 341 - 363 neu? nein auch nicht,
zum ersten Post ist tableChanged() neu, anscheinend ohne Relevanz (oder ist was geplant?)
und einige Leerzeilen um 365 rum


nach wie vor gilt: auf einen Buttonklick erfolgt eine Aktion,
in einen Listener, in eine actionPerformed(), muss Code hinein,
genau der Code der deine Wünsche erfüllt, z.B. eine DB-Abfrage + Erstellen eines Models usw.,

solange du nichts in einen Listener einfügst, gibt es nichts zu korrigieren/ beurteilen
 

BigMac

Mitglied
Ok jetzt hab ich es gelöst und es Funktioniert. Vielen Dank.
Ich bekomm aber eine fehlermeldung nachdem ich einen eintrag verändert habe und eine andere zeile in der tabelle anklicken möchte.
Der Code:
Java:
package adressbuch;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;



public class AdressBuch extends JFrame  {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6950577656155165307L;
	private JFrame frmAdressbuch;
	private JTextField nameField;
	private JTextField vnameField;
	private JTextField knrField;
	private JTextField strField;
	private JTextField nrField;
	private JTextField plzField;
	private JTextField stdField;
	private JTextField telField;
	private JTextField mailField;
	private static  Statement stmt;
	static String sp;
	static String ae;
	static String su;
	static String sql;
	private JTable table = null;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		String user = "root";
		String pw = "";
		String url = "jdbc:mysql://localhost/adressen";


		Class.forName("com.mysql.jdbc.Driver");		
		
		Connection  con = DriverManager.getConnection(url,user,pw);

		stmt = con.createStatement();

		
		AdressBuch window = new AdressBuch();
		window.frmAdressbuch.setVisible(true);
		

		System.out.println("Gui läuft");
	}



	/**
	 * Initialize the contents of the frame.
	 * @ 
	 */
	public  AdressBuch( ) {
		
		frmAdressbuch = new JFrame();
		frmAdressbuch.setTitle("Adressbuch");
		frmAdressbuch.setBounds(100, 100, 565, 600);
		frmAdressbuch.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmAdressbuch.getContentPane().setLayout(null);
		
		JLabel lblNewLabel = new JLabel("Name");
		lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel.setBounds(10, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("Vorname");
		lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_1.setBounds(210, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_1);
		
		JLabel lblNewLabel_2 = new JLabel("Kundennr.");
		lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_2.setBounds(10, 60, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_2);
		
		JLabel lblNewLabel_3 = new JLabel("Strasse");
		lblNewLabel_3.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_3.setBounds(10, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_3);
		
		JLabel lblNewLabel_4 = new JLabel("Nr.");
		lblNewLabel_4.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_4.setBounds(210, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_4);
		
		JLabel lblNewLabel_5 = new JLabel("PLZ");
		lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_5.setBounds(10, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_5);
		
		JLabel lblNewLabel_6 = new JLabel("Stadt");
		lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_6.setBounds(210, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_6);
		
		JLabel lblNewLabel_7 = new JLabel("Telefon");
		lblNewLabel_7.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_7.setBounds(10, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_7);
		
		JLabel lblNewLabel_8 = new JLabel("E-Mail");
		lblNewLabel_8.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_8.setBounds(210, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_8);
		
		nameField = new JTextField();
		nameField.setBounds(90, 20, 100, 20);
		frmAdressbuch.getContentPane().add(nameField);
		nameField.setColumns(10);
		
		vnameField = new JTextField();
		vnameField.setBounds(290, 20, 100, 20);
		frmAdressbuch.getContentPane().add(vnameField);
		vnameField.setColumns(10);
		
		knrField = new JTextField();
		knrField.setBounds(90, 60, 100, 20);
		frmAdressbuch.getContentPane().add(knrField);
		knrField.setColumns(10);
		
		strField = new JTextField();
		strField.setBounds(90, 100, 100, 20);
		frmAdressbuch.getContentPane().add(strField);
		strField.setColumns(10);
		
		nrField = new JTextField();
		nrField.setBounds(290, 100, 40, 20);
		frmAdressbuch.getContentPane().add(nrField);
		nrField.setColumns(10);
		
		plzField = new JTextField();
		plzField.setBounds(90, 140, 100, 20);
		frmAdressbuch.getContentPane().add(plzField);
		plzField.setColumns(10);
		
		stdField = new JTextField();
		stdField.setBounds(290, 140, 100, 20);
		frmAdressbuch.getContentPane().add(stdField);
		stdField.setColumns(10);
		
		telField = new JTextField();
		telField.setBounds(90, 180, 100, 20);
		frmAdressbuch.getContentPane().add(telField);
		telField.setColumns(10);
		
		mailField = new JTextField();
		mailField.setBounds(290, 180, 100, 20);
		frmAdressbuch.getContentPane().add(mailField);
		mailField.setColumns(10);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(10, 220, 530, 20);
		frmAdressbuch.getContentPane().add(separator);
		
		JButton btnSpeichern = new JButton("Speichern");
		btnSpeichern.setBounds(445, 40, 95, 20);
		btnSpeichern.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				sp = "INSERT INTO adressen (knr,name,vname,str,nr,plz,std,tel,mail) VALUES ('"	       
	        + knrField.getText() 
	        + "','"  
	        + nameField.getText() 
	        + "','" 
	        + vnameField.getText() 
	        + "','" 
	        + strField.getText()
	        + "','" 
	        + nrField.getText()
	        + "','" 
	    	+ plzField.getText()
	    	+ "','" 
	        + stdField.getText()
	        + "','" 
	        + telField.getText()
	        + "','" 
	        + mailField.getText()
	        + "')"; 
				System.out.println(""+sp);
				try {
					int rs = stmt.executeUpdate(sp);
					
					System.out.println(""+rs);
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}
		});
		frmAdressbuch.getContentPane().add(btnSpeichern);
		
		
		JButton btnAendern = new JButton("\u00C4ndern");
		btnAendern.setBounds(445, 100, 95, 20);
		btnAendern.addActionListener(new ActionListener() {



			@Override
			public void actionPerformed(ActionEvent e) {

				ae = "UPDATE adressen SET name ='"	        
	        + nameField.getText() 
	        + "', vname ='" 
	        + vnameField.getText() 
	        + "', str ='" 
	        + strField.getText()
	        + "', nr ='" 
	        + nrField.getText()
	        + "', plz ='" 
	    	+ plzField.getText()
	    	+ "', std ='" 
	        + stdField.getText()
	        + "', tel ='" 
	        + telField.getText()
	        + "', mail ='" 
	        + mailField.getText()
	        + "' WHERE knr ='"
	        + knrField.getText()
	        + "';";				
	         
				System.out.println(""+ae);
				try {
					int rs = stmt.executeUpdate(ae);
					
					System.out.println(""+rs);
					TableModel();
				} catch (Exception ex) {
					ex.printStackTrace();
				}
				
			}			
			
		});
		frmAdressbuch.getContentPane().add(btnAendern);		
		
		
		JButton btnSuchen = new JButton("Suchen");
		btnSuchen.setBounds(445, 160, 95, 20);
		btnSuchen.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				su = "SELECT*FROM adressen WHERE knr='"	       
	        + knrField.getText() 
	        + "';";				
	        
				System.out.println(""+su);
				try {
					ResultSet rs = stmt.executeQuery(su);
					
					System.out.println(""+rs);
					
					while (rs.next()){
						String n = rs.getString(2);
						n= rs.getString("name");
						nameField.setText(n);
						
						String vn = rs.getString(3);
						vn= rs.getString("vname");
						vnameField.setText(vn);
						
						String st = rs.getString(4);
						st= rs.getString("str");
						strField.setText(st);
						
						String nr = rs.getString(5);
						nr= rs.getString("nr");
						nrField.setText(nr);
						
						String pl = rs.getString(6);
						pl= rs.getString("plz");
						plzField.setText(pl);
						
						String sd = rs.getString(7);
						sd= rs.getString("std");
						stdField.setText(sd);
						
						String te = rs.getString(8);
						te= rs.getString("tel");
						telField.setText(te);
						
						String ma = rs.getString(9);
						ma= rs.getString("mail");
						mailField.setText(ma);
						
					}
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}
		});
		
		frmAdressbuch.getContentPane().add(btnSuchen);		
			// Tabelle
			TableModel();
//			String[] titles = new String[]{"Kundennr.","Name","Vorname","Strasse", "Nr", "Stadt", "PLZ", "Telefon", "E-Mail"};			
//			final DefaultTableModel model = new DefaultTableModel(titles,0);
//			String sql = "SELECT * FROM adressen";
//			try {	        	
//				ResultSet as = stmt.executeQuery(sql);	        	
//				ResultSetMetaData md = as.getMetaData();
//	        	
//				int columns = md.getColumnCount();
//				
//				while (as.next()){
//					Vector<Object> row = new Vector<Object>(columns);
//	                
//	                for (int i = 2; i <= columns; i++) {
//	                    row.addElement( as.getObject(i) );
//	                }
//	                model.addRow(row);
//	                
//				}
//			} catch (SQLException e1) {
//				
//				e1.printStackTrace();
//			}			
			
//			final JTable table = new JTable(model);
			
	        
	             
	}	
	private  void TableModel(){
		
		String[] titles = new String[]{"Kundennr.","Name","Vorname","Strasse", "Nr", "PLZ", "Stadt", "Telefon", "E-Mail"};			
		final DefaultTableModel model = new DefaultTableModel(titles,0);
		String sql = "SELECT * FROM adressen";
		try {	        	
			ResultSet as = stmt.executeQuery(sql);	        	
			ResultSetMetaData md = as.getMetaData();
        	
			int columns = md.getColumnCount();
			
			while (as.next()){
				Vector<Object> row = new Vector<Object>(columns);
                
                for (int i = 2; i <= columns; i++) {
                    row.addElement( as.getObject(i) );
                }
                model.addRow(row);
                
			}
		} catch (SQLException e1) {
			
			e1.printStackTrace();
		}
		table = new JTable(model);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//        table.setPreferredScrollableViewportSize(new Dimension(800,300));
//        table.setPreferredSize(new Dimension(750,300));
        table.setSize(new Dimension(800,300));	        			
        JScrollPane scrollPane =  new JScrollPane();
        scrollPane.setBounds(10, 250, 530, 300);	        
        scrollPane.getViewport().add(table);
        
        
        
        table.addMouseListener(new MouseAdapter() {
        	
        	@Override
        	public void mouseClicked(MouseEvent e) {	        		
        		
        		int row = table.getSelectedRow();
        		
        		
        		Object knr =table.getModel().getValueAt(row, 0);
        		String a =knr.toString();
        		knrField.setText(a);
        		
        		Object name =table.getModel().getValueAt(row, 1);
        		String b =name.toString();
        		nameField.setText(b);
        		
        		Object vname =table.getModel().getValueAt(row, 2);
        		String c =vname.toString();
        		vnameField.setText(c);
        		
        		Object str =table.getModel().getValueAt(row, 3);
        		String d =str.toString();
        		strField.setText(d);
        		
        		Object nr =table.getModel().getValueAt(row, 4);
        		String t =nr.toString();
        		nrField.setText(t);
        		
        		Object plz =table.getModel().getValueAt(row, 5);
        		String f =plz.toString();
        		stdField.setText(f);
        		
        		Object std =table.getModel().getValueAt(row, 6);
        		String g =std.toString();
        		plzField.setText(g);
        		
        		Object tel =table.getModel().getValueAt(row, 7);
        		String h =tel.toString();
        		telField.setText(h);
        		
        		Object mail =table.getModel().getValueAt(row, 8);
        		String i =mail.toString();
        		mailField.setText(i);
            }        	
		});	        
        frmAdressbuch.getContentPane().add(scrollPane);
        
	}
}

Die Fehlermeldung:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
	at java.util.Vector.elementData(Unknown Source)
	at java.util.Vector.elementAt(Unknown Source)
	at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source)
	at adressbuch.AdressBuch$4.mouseClicked(AdressBuch.java:403)
	at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 
S

SlaterB

Gast
table.getSelectedRow() ist anscheinend -1, mit System.out.println() loggen,
warum kann ich gerade nicht gut sagen, da dein Programm DB-Code und keine Dummy-Daten enthält leider auch nicht auf die Schnelle zu testen

falls direkt danach ein zweites Event mit der richtigen SelectedRow kommt wäre es verkraftbar, von einem MouseListener kenne ich das allerdings weniger..,
wenn kein zweites Event kommt und in der Tabelle eine sinnvolle Zeile markiert ist, du aber nur ein Event mit getSelectedRow() == -1 ist,
wäre das in der Tat ein Problem mit dem begrenzten, kaum beeinflussbaren Angebot von Swing, mit dem man leben muss,

oder klickst du zufällig wer weiß wo hin, so dass keine Zeile markiert ist?
na, ich bräuchte eigentlich ein Testprogramm um irgendwas zu sagen,
wenn du interessiert am Ball bleibst, probiere ich es vielleicht bald selber aus ;)

falls jedenfalls table.getSelectedRow() -1 liefert, was du mit deiner Variablen row ja prüfen kannst,
dann ist im Rest der Methode nicht mehr viel zu machen, Abbruch, ein if einbauen
 

BigMac

Mitglied
ok ich habs durchgetestet. Ich hab 3 Zeilen in der Tabell mit Kundennr, name, usw als Spalten.
Wenn ich das Programm öffne und auf die erste Zeile klick, ist row=0(zweite zeile 1, dritte 2) so wie es sein sollte.

Wenn ich jetzt etwas verändere(egal was) in der ausgewählten zeile, dann funktioniert es auch
(UPDATE adressen SET name ='bauer1', vname ='hans2', str ='Leetstreet3', nr ='24', plz ='623432', std ='neustadt', tel ='08151337', mail ='mail@iwo.com' WHERE knr ='1'; ).

Wenn ich jetzt auf eine andere zeile Springe(egal welche Spalte) dann wird row -1.

Ich glaub es hackt im listener vom btnAendern.

Wo soll ich das if einbauen und wozu?
 
Zuletzt bearbeitet:

BigMac

Mitglied
ich habs gelöst
man musste
Java:
int row = table.rowAtPoint(e.getPoint());
einfügen

aber wieso das so ist habe ich keine ahnung
vielleicht kann es ja jemand auflösen.

Hier der komplette Code:

Java:
package adressbuch;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;



public class AdressBuch extends JFrame  {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6950577656155165307L;
	private JFrame frmAdressbuch;
	private JTextField nameField;
	private JTextField vnameField;
	private JTextField knrField;
	private JTextField strField;
	private JTextField nrField;
	private JTextField plzField;
	private JTextField stdField;
	private JTextField telField;
	private JTextField mailField;
	private static  Statement stmt;
	static String sp;
	static String ae;
	static String su;
	static String sql;
	private JTable table = null;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		String user = "root";
		String pw = "";
		String url = "jdbc:mysql://localhost/adressen";


		Class.forName("com.mysql.jdbc.Driver");		
		
		Connection  con = DriverManager.getConnection(url,user,pw);

		stmt = con.createStatement();

		
		AdressBuch window = new AdressBuch();
		window.frmAdressbuch.setVisible(true);
		

		System.out.println("Gui läuft");
	}



	/**
	 * Initialize the contents of the frame.
	 * @ 
	 */
	public  AdressBuch( ) {
		
		frmAdressbuch = new JFrame();
		frmAdressbuch.setTitle("Adressbuch");
		frmAdressbuch.setBounds(100, 100, 565, 600);
		frmAdressbuch.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmAdressbuch.getContentPane().setLayout(null);
		
		JLabel lblNewLabel = new JLabel("Name");
		lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel.setBounds(10, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("Vorname");
		lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_1.setBounds(210, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_1);
		
		JLabel lblNewLabel_2 = new JLabel("Kundennr.");
		lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_2.setBounds(10, 60, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_2);
		
		JLabel lblNewLabel_3 = new JLabel("Strasse");
		lblNewLabel_3.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_3.setBounds(10, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_3);
		
		JLabel lblNewLabel_4 = new JLabel("Nr.");
		lblNewLabel_4.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_4.setBounds(210, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_4);
		
		JLabel lblNewLabel_5 = new JLabel("PLZ");
		lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_5.setBounds(10, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_5);
		
		JLabel lblNewLabel_6 = new JLabel("Stadt");
		lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_6.setBounds(210, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_6);
		
		JLabel lblNewLabel_7 = new JLabel("Telefon");
		lblNewLabel_7.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_7.setBounds(10, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_7);
		
		JLabel lblNewLabel_8 = new JLabel("E-Mail");
		lblNewLabel_8.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_8.setBounds(210, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_8);
		
		nameField = new JTextField();
		nameField.setBounds(90, 20, 100, 20);
		frmAdressbuch.getContentPane().add(nameField);
		nameField.setColumns(10);
		
		vnameField = new JTextField();
		vnameField.setBounds(290, 20, 100, 20);
		frmAdressbuch.getContentPane().add(vnameField);
		vnameField.setColumns(10);
		
		knrField = new JTextField();
		knrField.setBounds(90, 60, 100, 20);
		frmAdressbuch.getContentPane().add(knrField);
		knrField.setColumns(10);
		
		strField = new JTextField();
		strField.setBounds(90, 100, 100, 20);
		frmAdressbuch.getContentPane().add(strField);
		strField.setColumns(10);
		
		nrField = new JTextField();
		nrField.setBounds(290, 100, 40, 20);
		frmAdressbuch.getContentPane().add(nrField);
		nrField.setColumns(10);
		
		plzField = new JTextField();
		plzField.setBounds(90, 140, 100, 20);
		frmAdressbuch.getContentPane().add(plzField);
		plzField.setColumns(10);
		
		stdField = new JTextField();
		stdField.setBounds(290, 140, 100, 20);
		frmAdressbuch.getContentPane().add(stdField);
		stdField.setColumns(10);
		
		telField = new JTextField();
		telField.setBounds(90, 180, 100, 20);
		frmAdressbuch.getContentPane().add(telField);
		telField.setColumns(10);
		
		mailField = new JTextField();
		mailField.setBounds(290, 180, 100, 20);
		frmAdressbuch.getContentPane().add(mailField);
		mailField.setColumns(10);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(10, 220, 530, 20);
		frmAdressbuch.getContentPane().add(separator);
		
		JButton btnSpeichern = new JButton("Speichern");
		btnSpeichern.setBounds(445, 40, 95, 20);
		btnSpeichern.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				sp = "INSERT INTO adressen (knr,name,vname,str,nr,plz,std,tel,mail) VALUES ('"	       
	        + knrField.getText() 
	        + "','"  
	        + nameField.getText() 
	        + "','" 
	        + vnameField.getText() 
	        + "','" 
	        + strField.getText()
	        + "','" 
	        + nrField.getText()
	        + "','" 
	    	+ plzField.getText()
	    	+ "','" 
	        + stdField.getText()
	        + "','" 
	        + telField.getText()
	        + "','" 
	        + mailField.getText()
	        + "')"; 
				System.out.println(""+sp);
				try {
					int rs = stmt.executeUpdate(sp);
					
					System.out.println(""+rs);
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}
		});
		frmAdressbuch.getContentPane().add(btnSpeichern);
		
		
		JButton btnAendern = new JButton("\u00C4ndern");
		btnAendern.setBounds(445, 100, 95, 20);
		btnAendern.addActionListener(new ActionListener() {



			@Override
			public void actionPerformed(ActionEvent e) {

				ae = "UPDATE adressen SET name ='"	        
	        + nameField.getText() 
	        + "', vname ='" 
	        + vnameField.getText() 
	        + "', str ='" 
	        + strField.getText()
	        + "', nr ='" 
	        + nrField.getText()
	        + "', plz ='" 
	    	+ plzField.getText()
	    	+ "', std ='" 
	        + stdField.getText()
	        + "', tel ='" 
	        + telField.getText()
	        + "', mail ='" 
	        + mailField.getText()
	        + "' WHERE knr ='"
	        + knrField.getText()
	        + "';";				
	         
				System.out.println(""+ae);
				try {
					int rs = stmt.executeUpdate(ae);
					
					System.out.println(""+rs);
					TableModel();
				} catch (Exception ex) {
					ex.printStackTrace();
				}
				
			}			
			
		});
		frmAdressbuch.getContentPane().add(btnAendern);		
		
		
		JButton btnSuchen = new JButton("Suchen");
		btnSuchen.setBounds(445, 160, 95, 20);
		btnSuchen.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				su = "SELECT*FROM adressen WHERE knr='"	       
	        + knrField.getText() 
	        + "';";				
	        
				System.out.println(""+su);
				try {
					ResultSet rs = stmt.executeQuery(su);
					
					System.out.println(""+rs);
					
					while (rs.next()){
						String n = rs.getString(2);
						n= rs.getString("name");
						nameField.setText(n);
						
						String vn = rs.getString(3);
						vn= rs.getString("vname");
						vnameField.setText(vn);
						
						String st = rs.getString(4);
						st= rs.getString("str");
						strField.setText(st);
						
						String nr = rs.getString(5);
						nr= rs.getString("nr");
						nrField.setText(nr);
						
						String pl = rs.getString(6);
						pl= rs.getString("plz");
						plzField.setText(pl);
						
						String sd = rs.getString(7);
						sd= rs.getString("std");
						stdField.setText(sd);
						
						String te = rs.getString(8);
						te= rs.getString("tel");
						telField.setText(te);
						
						String ma = rs.getString(9);
						ma= rs.getString("mail");
						mailField.setText(ma);
						
					}
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}				
			}
		});
		
		frmAdressbuch.getContentPane().add(btnSuchen);		
			// Tabelle
			TableModel();
//			String[] titles = new String[]{"Kundennr.","Name","Vorname","Strasse", "Nr", "Stadt", "PLZ", "Telefon", "E-Mail"};			
//			final DefaultTableModel model = new DefaultTableModel(titles,0);
//			String sql = "SELECT * FROM adressen";
//			try {	        	
//				ResultSet as = stmt.executeQuery(sql);	        	
//				ResultSetMetaData md = as.getMetaData();
//	        	
//				int columns = md.getColumnCount();
//				
//				while (as.next()){
//					Vector<Object> row = new Vector<Object>(columns);
//	                
//	                for (int i = 2; i <= columns; i++) {
//	                    row.addElement( as.getObject(i) );
//	                }
//	                model.addRow(row);
//	                
//				}
//			} catch (SQLException e1) {
//				
//				e1.printStackTrace();
//			}			
			
//			final JTable table = new JTable(model);
			
	        
	             
	}	
	private  void TableModel(){
		
		String[] titles = new String[]{"Kundennr.","Name","Vorname","Strasse", "Nr", "PLZ", "Stadt", "Telefon", "E-Mail"};			
		final DefaultTableModel model = new DefaultTableModel(titles,0);
		String sql = "SELECT * FROM adressen";
		try {	        	
			ResultSet as = stmt.executeQuery(sql);	        	
			ResultSetMetaData md = as.getMetaData();
        	
			int columns = md.getColumnCount();
			
			while (as.next()){
				Vector<Object> row = new Vector<Object>(columns);
                
                for (int i = 2; i <= columns; i++) {
                    row.addElement( as.getObject(i) );
                }
                model.addRow(row);
                
			}
		} catch (SQLException e1) {
			
			e1.printStackTrace();
		}
		table = new JTable(model);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//        table.setPreferredScrollableViewportSize(new Dimension(800,300));
//        table.setPreferredSize(new Dimension(750,300));
        table.setSize(new Dimension(800,300));	        			
        JScrollPane scrollPane =  new JScrollPane();
        scrollPane.setBounds(10, 250, 530, 300);	        
        scrollPane.getViewport().add(table);
        
        
        
        table.addMouseListener(new MouseAdapter() {
        	
        	@Override
        	public void mouseClicked(MouseEvent e) {	        		
        		
//        		int row = table.getSelectedRow();
        		int row = table.rowAtPoint(e.getPoint());
        		System.out.print(row);
        		
        		Object knr =table.getModel().getValueAt(row, 0);
        		String a =knr.toString();
        		knrField.setText(a);
        		
        		Object name =table.getModel().getValueAt(row, 1);
        		String b =name.toString();
        		nameField.setText(b);
        		
        		Object vname =table.getModel().getValueAt(row, 2);
        		String c =vname.toString();
        		vnameField.setText(c);
        		
        		Object str =table.getModel().getValueAt(row, 3);
        		String d =str.toString();
        		strField.setText(d);
        		
        		Object nr =table.getModel().getValueAt(row, 4);
        		String t =nr.toString();
        		nrField.setText(t);
        		
        		Object plz =table.getModel().getValueAt(row, 6);
        		String f =plz.toString();
        		stdField.setText(f);
        		
        		Object std =table.getModel().getValueAt(row, 5);
        		String g =std.toString();
        		plzField.setText(g);
        		
        		Object tel =table.getModel().getValueAt(row, 7);
        		String h =tel.toString();
        		telField.setText(h);
        		
        		Object mail =table.getModel().getValueAt(row, 8);
        		String i =mail.toString();
        		mailField.setText(i);
            }        	
		});	        
        frmAdressbuch.getContentPane().add(scrollPane);
        
	}
}

Ich danke allen für ihre hilfe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
Kenan89 JTable aktualisieren AWT, Swing, JavaFX & SWT 21
C jTable aktualisieren AWT, Swing, JavaFX & SWT 2
S JTable - Aktualisieren / Neu zeichnen. AWT, Swing, JavaFX & SWT 5
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
C Swing Inhalt einer JTable aktualisieren und filten nach Feldern die nicht in der Tabelle sind AWT, Swing, JavaFX & SWT 3
K Swing JTable Model aktualisieren AWT, Swing, JavaFX & SWT 2
K JTable aktualisieren AWT, Swing, JavaFX & SWT 9
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing JTable nach einer Änderung einer Zelle komplett aktualisieren. AWT, Swing, JavaFX & SWT 10
S JTable aktualisieren AWT, Swing, JavaFX & SWT 4
U JTable in einem Tab aktualisieren aus anderem Tab heraus initiiert AWT, Swing, JavaFX & SWT 4
A JComboBox bei Veränderungen in der JTable mit aktualisieren AWT, Swing, JavaFX & SWT 6
G Swing JTable will sich einfach nicht aktualisieren AWT, Swing, JavaFX & SWT 4
N JTable aktualisieren AWT, Swing, JavaFX & SWT 2
calzone Swing JTable, Werte aktualisieren klappt nicht! AWT, Swing, JavaFX & SWT 7
G JTable bei Insert in DB via jdbc aktualisieren AWT, Swing, JavaFX & SWT 9
M Wie, ein JTable / JPanel / JContentPane aktualisieren? AWT, Swing, JavaFX & SWT 3
G JTable aktualisieren fireTableDataChanged()? AWT, Swing, JavaFX & SWT 1
J GUI (JTable) während Rekursion aktualisieren AWT, Swing, JavaFX & SWT 4
S jTable beim Klick auf Button aktualisieren AWT, Swing, JavaFX & SWT 7
F JTable Daten aktualisieren AWT, Swing, JavaFX & SWT 2
N JTable aktualisieren AWT, Swing, JavaFX & SWT 8
M JTable aktualisieren AWT, Swing, JavaFX & SWT 17
C JTable aktualisieren AWT, Swing, JavaFX & SWT 5
H JTable aktualisieren / InternalFrames auf Panel beschränken AWT, Swing, JavaFX & SWT 6
I JTable aktualisieren AWT, Swing, JavaFX & SWT 4
H JTable aktualisieren AWT, Swing, JavaFX & SWT 7
J JTable aktualisieren 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
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 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
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

Ähnliche Java Themen

Neue Themen


Oben