Problem mit JTable

ich_Schmiddy

Mitglied
Hi!

Hallo! Ich habe eine Funktion, die eine Berechnung durchführt, und dann sollen die berechneten Elemente in eine JTable geschrieben werden. Die Elemente liegen in einem Vector "ergebnis", aber wie hänge ich sie an die Tabelle ran? Ich weiß beim Erstellen der JTable nicht, wieviele Elemente reinkommen...


////////

JTable tabelle = new JTable();

for (int i=0; i<ergebnis.size(); i++)
{
String temp = String.valueOf(ergebnis.get(i));

// teile den String in die Inhalte auf
eins = 1. Teil von temp
zwei = 2. Teil von temp

// und jetzt sollen die beiden Teile in die JTable, probiert
// habe ich es mit "setValueAt", also
tabelle.setValueAt(eins,0,i);
tabelle.setValueAt(eins,1,i);

// aber das tut leider nicht, da gibt es ein "Index out of Bounds"
}
 
Hallo!

Versuch doch mal die daten so in die JTable zu bekommen ...

Code:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.Arrays;
import java.util.Random;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/*
 * Created on 23.02.2004
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */

/**
 * @author Darimont
 *
 * To change the template for this generated type comment go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
public class JTableExample extends JFrame {

	private Vector rows;
	private Vector rowData;
	private Object[] headerNames;

	private JScrollPane scrollPane;
	private JPanel content;
	private JTable table;

	private DefaultTableModel dtm;

	public JTableExample() {
		super("JTable Example");
		setSize(512, 384);

		table = new JTable();
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

		headerNames = new Object[] { "Spalte1", "Spalte2", "Spalte3" };

		dtm = new DefaultTableModel();

		rows = new Vector(10);

		Random rnd = new Random();

		for (int i = 0; i < 10; i++) {
			rowData = new Vector(3);
			for (int j = 0; j < 3; j++) {
				//nextInt demonstriert deine Berechnung 
				rowData.add(
					"Wert:"
						+ rnd.nextInt() % 30
						+ "@ Row: "
						+ (i + 1)
						+ " Clm: "
						+ (j + 1));
			}
			rows.add(rowData);
		}

		dtm.setDataVector(rows, new Vector(Arrays.asList(headerNames)));

		table.setModel(dtm);

		scrollPane = new JScrollPane(table);
		scrollPane.setPreferredSize(new Dimension(400, 300));

		content = new JPanel();
		content.add(scrollPane);


		getContentPane().setLayout(new FlowLayout());
		getContentPane().add(content);
		

		setVisible(true);
	}

	public static void main(String[] args) {
		new JTableExample();
	}
}

Ich glaube zu beginn enthält deine Tabelle noch 0 Zeilen und 0 Spalte...
du solltest zuerst mal ein Tablemodel füllen und das der JTable übergeben.
Wie im Beispiel.

Gruß Tom
 
Zurück