JTable alle Zeilen löschen

Bluedaishi

Bekanntes Mitglied
Hallo alle zusammen,

ich habe folgendes Problem , ich habe ein JTable mit daten aus einer Datenbank.

nun möchte ich wenn ich über ein Textfeld eine id eingebe das das JTable die neuen Daten anzeigt.
Zur zeit funktioniert das nur das das die neuen Daten im JTable angehangen werden.

vielleicht könnt ihr mir ja weiter helfen.

grüße an alle 😀

Java:
private void getTable() {
		
		//	scrollPane_1.setVisible(true);
			
			@SuppressWarnings("unused")
		    DefaultTableCellRenderer centerRendererCENTER = new DefaultTableCellRenderer();
		    centerRendererCENTER.setHorizontalAlignment(0);
		
		    DefaultTableCellRenderer centerRendererRIGHT = new DefaultTableCellRenderer();
		    centerRendererRIGHT.setHorizontalAlignment(4);
		
		    DefaultTableCellRenderer centerRendererLEFT = new DefaultTableCellRenderer();
		    centerRendererLEFT.setHorizontalAlignment(2);
		
		    String[] title = { "SpaltenNamen", "", "", usw };
		
		     table = new JTable(data, title)
		    {
		      private static final long serialVersionUID = 1L;
		
		      public boolean isCellEditable(int row, int column)
		      {
		        return false;
		      }
		    };
		
		    scrollPane_1.setViewportView(table);
		    table.getColumnModel().getColumn(0).setResizable(false);
		    table.getColumnModel().getColumn(0).setPreferredWidth(15);
		    table.getColumnModel().getColumn(0).setCellRenderer(centerRendererCENTER);
		    table.getColumnModel().getColumn(1).setResizable(false);
		    table.getColumnModel().getColumn(1).setPreferredWidth(27);
		    table.getColumnModel().getColumn(1).setCellRenderer(centerRendererCENTER);
		    table.getColumnModel().getColumn(2).setResizable(false);
		    table.getColumnModel().getColumn(2).setPreferredWidth(150);
		    table.getColumnModel().getColumn(2).setCellRenderer(centerRendererLEFT);
		    table.getColumnModel().getColumn(3).setResizable(false);
		    table.getColumnModel().getColumn(3).setPreferredWidth(50);
		    table.getColumnModel().getColumn(3).setCellRenderer(centerRendererCENTER);
		    table.getColumnModel().getColumn(4).setResizable(false);
		    table.getColumnModel().getColumn(4).setPreferredWidth(35);
		    table.getColumnModel().getColumn(4).setCellRenderer(centerRendererRIGHT);
		    table.getColumnModel().getColumn(5).setResizable(false);
		    table.getColumnModel().getColumn(5).setPreferredWidth(35);
		    table.getColumnModel().getColumn(5).setCellRenderer(centerRendererRIGHT);
		    table.getColumnModel().getColumn(6).setResizable(false);
		    table.getColumnModel().getColumn(6).setPreferredWidth(35);
		    table.getColumnModel().getColumn(6).setCellRenderer(centerRendererRIGHT);
		    table.getColumnModel().getColumn(7).setResizable(false);
		    table.getColumnModel().getColumn(7).setPreferredWidth(35);
		    table.getColumnModel().getColumn(7).setCellRenderer(centerRendererRIGHT);
		    table.getColumnModel().getColumn(8).setResizable(false);
		    table.getColumnModel().getColumn(8).setPreferredWidth(35);
		    table.getColumnModel().getColumn(8).setCellRenderer(centerRendererRIGHT);
		    table.setSelectionForeground(Color.WHITE);
		    table.setSelectionBackground(Color.BLACK);
		    table.setSelectionMode(0);
		    table.setBorder(new BevelBorder(1, null, null, null, null));
		    table.setFont(new Font("Tahoma", 1, 12));
		    table.setBackground(Color.LIGHT_GRAY);
		    table.setShowVerticalLines(false);
		    table.getTableHeader().setFont(new Font("Thoma", 1, 12));
		    new Color(0);
		    table.getTableHeader().setForeground(Color.RED);

			    table.addMouseListener(new MouseAdapter(){

			    	public void mouseClicked(MouseEvent e) {
			    			
			    		if (e.getClickCount() == 2){
			          
			    			int row = table.rowAtPoint(e.getPoint());
			
			    			Object idstr = table.getModel().getValueAt(row, 9);
			    			String str_idstr = idstr.toString();
			    			str_idstr = str_idstr.trim();
			    			FirmaVorgang.int_id = Integer.parseInt(str_idstr);
			    			
			    			try{
			            
			    				.... mach daraus was :-)
			    			}
			    			catch (IOException e1) {
			    				e1.printStackTrace();
			    			}
			        }
			      }
			    });
			    
			 scrollPane_1.setVerticalScrollBarPolicy(20);
			 scrollPane_1.setFont(new Font("Tahoma", 1, 13));
			 scrollPane_1.setBorder(new BevelBorder(1, null, null, null, null));
			 scrollPane_1.setHorizontalScrollBarPolicy(31);
			 scrollPane_1.setBounds(39, 155, 756, 242);
			 scrollPane_1.setBackground(Color.LIGHT_GRAY);
			 st.getContentPane().add(scrollPane_1);
	}
 
Zuletzt bearbeitet von einem Moderator:
> Zur zeit funktioniert das nur das das die neuen Daten im JTable angehangen werden.

das sähe ich gerne, aber der Code gibt nichts davon wieder,
wie auch überhaupt alles möglichst sparsam an Infos, außer 50 Zeilen wie die Columns eine Size bekommen..
(Achtung, Verweis 😉 )

nur 3 Varianten fallen mir ein:
- wenn du die Table mit Arrays im Konstruktor definierst, kannst du nichts später einfügen,
danach sieht es im Moment aus

- wenn du die Table mit Vector im Konstruktor definierst, wird ein DefaultTableModel verwendet,
sofern du später getModel() auf DefaultTableModel castest, dann gibt es addRow(), aber genauso auch removeRow() usw.
DefaultTableModel (Java Platform SE 7 )

- hast du ein eigenes TableModel, ist alles mögliche denkbar
 
ich habe kein default table model angegeben :-(

Java:
try{
			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/adn", "root", "root");
			stmt = conn.createStatement();
			rs = stmt.executeQuery("SELECT hallennr, geraetenr, geraetetyp, zulassungsnr, einwurf, auswurf, saldo1, EK_Kasse, saldo2, idstatistik FROM statistik WHERE vorgangsnr='" + int_vorgang + "'");
			rsmd = rs.getMetaData();
			columnCount = rsmd.getColumnCount();
			row = new String[columnCount];
																							
				double doub_einwurfge = 0.0D;
				double doub_auswurfge = 0.0D;
				double doub_saldo1ge = 0.0D;
				double doub_ekkassege = 0.0D;
			    double doub_saldo2ge = 0.0D;
				 
					String str_einwurf = null;
					String str_auswurf = null;
					String str_saldo1 = null;
					String str_ekkasse = null;
					String str_saldo2 = null;
		
					
					 while (rs.next()) {
						row[0] = rs.getString("hallennr");
				        row[1] = rs.getString("geraetenr");
				        row[2] = rs.getString("geraetetyp");
				        row[3] = rs.getString("zulassungsnr");
				        row[4] = rs.getString("einwurf");
				        row[5] = rs.getString("auswurf");
				        row[6] = rs.getString("saldo1");
				        row[7] = rs.getString("EK_Kasse");
				        row[8] = rs.getString("saldo2");
				        row[9] = rs.getString("idstatistik");
				        rows.add(row);
				
				        str_einwurf = row[4];
				        str_einwurf = str_einwurf.replace(",", ".").trim();
				        double doub_einwurf = Double.parseDouble(str_einwurf);
				        doub_einwurfge += doub_einwurf;
				
				        str_auswurf = row[5];
				        str_auswurf = str_auswurf.replace(",", ".").trim();
				        double doub_auswurf = Double.parseDouble(str_auswurf);
				        doub_auswurfge += doub_auswurf;
				
				        str_saldo1 = row[6];
				        str_saldo1 = str_saldo1.replace(",", ".").trim();
				        double doub_saldo1 = Double.parseDouble(str_saldo1);
				        doub_saldo1ge += doub_saldo1;
				
				        str_ekkasse = row[7];
				        str_ekkasse = str_ekkasse.replace(",", ".").trim();
				        double doub_ekkasse = Double.parseDouble(str_ekkasse);
				        doub_ekkassege += doub_ekkasse;
				
				        str_saldo2 = row[8];
				        str_saldo2 = str_saldo2.replace(",", ".").trim();
				        double doub_saldo2 = Double.parseDouble(str_saldo2);
				        doub_saldo2ge += doub_saldo2;
				
				        row = new String[columnCount];
								
							}																
						}
 
der neue Code, wofür auch immer, erklärt jedenfalls nicht meine Frage, wie eine row in die Tabelle kommt,

nebenbei: die Daten darin sind ganz egal, im Fehlerfall besser immer auf DB und ähnlich kompliziertes verzichten,
einfach nur Dummy-Werte oder 'Zeile [neue Nummer]' reicht völlig

> ich habe kein default table model angegeben

wäre ja jetzt eine Möglichkeit zur Verbesserung, also mehr als den Vorschlag kann ich kaum machen
 
sorry das war in dem code nicht mehr zusehen :-(

Java:
data = (String[][])rows.toArray(new String[rows.size()][columnCount]);
 
und was ist data? was passiert damit?
ein zuvor erstelltes JTable-Objekt sollte sich darum nicht kümmern,
wird eine neue JTable angelegt?

zu deiner Ursprungsfrage aber mag helfen, rows zu leeren und dann den Weg, welcher auch immer aktuell funktioniert oder auch nicht,
wenn rows leer und Update erfolgt, dann auch JTable leer?
 

Neue Themen


Zurück
Oben