Portal > Foren > Java > Desktop-Applikationen und Grafik > JTable aktualisieren
Antwort
 
Themen-Optionen
Alt 20.05.2005, 00:13 Nach oben    #1
Vril
Gast
 
Beiträge: n/a
Standard JTable aktualisieren

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();
		}
		
		
	}
}
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.05.2005, 00:26 Nach oben    #2
Neuer Benutzer
 
Benutzerbild von dyrathror
 
Registriert seit: 17.03.2005
Beiträge: 18
Standard

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
dyrathror ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.05.2005, 14:25 Nach oben    #3
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Such mal in der API nach der Klasse DefaultTableModel

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.05.2005, 16:37 Nach oben    #4
Sym
Chefkoch-Mod
 
Benutzerbild von Sym
 
Registriert seit: 30.05.2004
Beiträge: 433
Standard

Zitat:
Zitat von sparrow
Such mal in der API nach der Klasse DefaultTableModel

Gruß
Sparrow
Ich hoffe, dass es damit geklappt hat.
__________________
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
Sym ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:32 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44