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:
mfg
Mac
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);
}
}
Mac