![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
Hallo, hab einen JTable der mit Daten aus einer *.mdb gefüllt wird. Jetzt habe ich einen JDialog eingebaut mit dem man neue Datensätze eingeben und löschen kann. Das funktioniert auch wunderbar, jedoch werden die jeweiligen änderungen erst nach einem kompletten Programmneustart sichtbar! Hat zufällig jemand eine Idee wie ich es am besten anstelle damit die Daten im JTable gleich nach einer Eingabe bzw. löschen aktualisiert werden? So sieht der Code bis jetzt aus: Code: import javax.swing.*;
import java.sql.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class SimpleTable2 implements ActionListener
{
public JButton NeuerDatensatz;
public static String rowData[][];
public void Tabelle()
{
Connection con = null;
Statement stmt = null;
Statement stmt1 = null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection( "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=sbdemo");
//con = DriverManager.getConnection("jdbc:odbc:sbdemo");
stmt = con.createStatement();
stmt1 = con.createStatement();
String leer = " ";
ResultSet rs = stmt.executeQuery(
"SELECT * FROM Pizzas");
ResultSet rs2 = stmt1.executeQuery (
"SELECT COUNT(*) FROM Pizzas");
rs2.next();
int count = (int)rs2.getDouble (1);
rowData = new String[count][2];
int c = 0;
while (rs.next() ){
String Namen = rs.getString(1);
double Preis = rs.getDouble(2);
System.out.println("Namen: "+Namen+" "+Preis);
rowData[c][0]= Namen;
rowData[c][1]= ""+Preis;
c++;
}
} catch (Exception e){
System.err.println(e);
}}
public SimpleTable2(){
Tabelle();
String columnNames[]={ "Name" , "Preis"};
JTable table = new JTable( rowData, columnNames );
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JButton NeuerDatensatz = new JButton("Daten erfassen");
NeuerDatensatz.addActionListener(this);
JButton LoeschenDatensatz = new JButton("Datensatz löschen");
LoeschenDatensatz.addActionListener(this);
JPanel buttons = new JPanel();
frame.setTitle("Speisekarte");
buttons.add(NeuerDatensatz);
buttons.add(LoeschenDatensatz);
frame.getContentPane().add(buttons, BorderLayout.NORTH);
frame.getContentPane().add( new JScrollPane(table) );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand()=="Daten erfassen"){
new Eingeben();
System.out.println("Hallo");
}
if(e.getActionCommand()=="Datensatz löschen"){
new Loeschen();
System.out.println("Hallo");
}
}
public static void main( String args[] ){
new SimpleTable2();
}
}
class Eingeben extends JDialog implements ActionListener{
public JTextField gtpname, gtppreis;
public JButton verwerfen, speichern, abbrechen;
public Eingeben(){
setModal(true);
setTitle("Geben Sie die Daten für eine neue JPizza ein!");
setSize(300,200);
setLayout(new GridLayout(3,1));
JLabel pname = new JLabel("Name der Pizza: ");
//getContentPane().add(pname);
gtpname = new JTextField(15);
JPanel fornames = new JPanel();
fornames.add(pname);
fornames.add(gtpname);
getContentPane().add(fornames);
JLabel ppreis = new JLabel("Preis der Pizza: ");
//getContentPane().add(ppreis);
gtppreis = new JTextField(15);
JPanel forprices = new JPanel();
forprices.add(ppreis);
forprices.add(gtppreis);
getContentPane().add(forprices);
speichern = new JButton("Speichern");
verwerfen = new JButton("Verwerfen");
abbrechen = new JButton("Abbrechen");
JPanel auswahl = new JPanel();
auswahl.add(speichern);
auswahl.add(verwerfen);
auswahl.add(abbrechen);
getContentPane().add(auswahl);
speichern.addActionListener(this);
verwerfen.addActionListener(this);
abbrechen.addActionListener(this);
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent event){
if(event.getActionCommand().equals("Abbrechen")){
dispose();
}
if(event.getActionCommand().equals("Verwerfen")){
System.out.println("Geht was?");
gtpname.setText("");
//dispose();
}
if(event.getActionCommand().equals("Speichern")){
String name = gtpname.getText();
StringTokenizer preisw = new StringTokenizer(gtppreis.getText());
Double preis = Double.parseDouble(preisw.nextToken());
Connection con = null;
Statement stmt = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:sbdemo");
stmt = con.createStatement();
stmt.executeUpdate (
"INSERT INTO Pizzas VALUES ('" +name +"',"+ preis+")");
} catch (Exception e){
System.err.println(e);
}
System.out.println(name);
System.out.println(preis);
//TableModelEvent(TableModel table, int firstRow, int lastRow) ;
//Bedeutet das in der JTable table alle Zeilen und Spalten aktualisiert werden
//Tabelle aktualisieren, aber wie???
//new Tabelle();
dispose();
//new Tabelle();
}
}
}
class Loeschen extends JDialog implements ActionListener {
public JTextField delpname;
public Loeschen(){
setModal(true);
setTitle("Geben Sie den Namen der zu löschenden JPizza ein!");
setSize(350,100);
setLayout(new GridLayout(2,1));
JLabel pname = new JLabel("Name der Pizza: ");
//getContentPane().add(pname);
delpname = new JTextField(15);
JPanel fornames = new JPanel();
fornames.add(pname);
fornames.add(delpname);
getContentPane().add(fornames);
JPanel buttons = new JPanel();
JButton ok = new JButton("OK");
ok.addActionListener(this);
buttons.add(ok);
JButton abbrechen = new JButton("Abbrechen");
abbrechen.addActionListener(this);
buttons.add(abbrechen);
getContentPane().add(buttons);
setVisible(true);
}
public void actionPerformed(ActionEvent event){
if(event.getActionCommand()=="Abbrechen"){
dispose();
}
if(event.getActionCommand()=="OK"){
String name = delpname.getText();
Connection con = null;
Statement stmt = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:sbdemo");
stmt = con.createStatement();
stmt.executeUpdate(
"DELETE FROM Pizzas WHERE name='"+name+"'");
} catch (Exception e){
System.err.println(e);
}
System.out.println(name);
dispose();
}
}
}
|
|
| | Nach oben #2 |
| Neuer Benutzer Registriert seit: 17.03.2005
Beiträge: 18
|
Hi, ich hätte zuerst mal eine Bitte, wenn Du in Zukunft JavaCode postest, könntest Du den dann bitte auch als JavaCode formatieren? Geht mit dem kleinen Icon über dem EingabeEditor. Dann werden Deine Daten nur einmal dargestellt, weil Du sie nur einmal an die JTable übergibst. An der Stelle wo Du die JTable erzeugst. Wenn Du dynamisch Daten hinzufügen/löschen möchtest gehst Du am besten über das TableModel und manipulierst hier die Daten. Gruß Stephan |
| | |
| | Nach oben #4 | |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 433
| Zitat:
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [PHP] Mit PHP dynamisch einen RSS-Feed aktualisieren | Jann Hendrik | Tutorials | 0 | 13.03.2007 09:52 |
| JTable reagiert nicht auf Menueklick | tommyboy | Desktop-Applikationen und Grafik | 8 | 20.08.2006 23:38 |
| GESUCHT:simples beispiel zum thema resultset, tablemodel => in einer JTable ausgeben! | bamboocha | Desktop-Applikationen und Grafik | 2 | 06.06.2005 21:34 |
| Spaltennamen in einer JTable | argos | Desktop-Applikationen und Grafik | 6 | 15.05.2005 18:16 |
| JTable aktualisieren | sparrow | Desktop-Applikationen und Grafik | 9 | 05.02.2005 19:35 |