Eingelesene txt file per JTabel ausgeben

BeneS

Grünschnabel
hey folks,

ich habe bereits eine txt Datei eingelesen und die Wörter in einem array (text[i]) abgespeichert.

Ist das jetzt irgendwie möglich dieses Array auf einer tabelle mit JTabel auszugeben.

Ich habe schon irgendwie soetwas versucht:
Code:
                       String Spalten [] = new String[8];
	  String Zeilen[][] = new String[100][8];
	  
	  for (int j=0;j<8;j++)
	  {
	  text[j]=Spalten[j];
	  }
	  
	  for(int k=10;k<100;k++)
	  {
	  text[k]=Zeilen[k][k]; //das kann glaub ich gar ned  oder?
	  }
	  
	  JTable table = new JTable(Zeilen, Spalten);

Keine Ahnung,ob das der richtige Ansatz ist... Ich hab noch nicht ganz soviel Plan.Aber ich muss das grad im Praktikum für meine Firma machen...

Freue mich über jede Hilfe.

mfg

Bene
 
Same procedure...

BeneS hat gesagt.:
hey folks,
ich habe bereits eine txt Datei eingelesen und die Wörter in einem array (text[ i ]) abgespeichert.

Ist das jetzt irgendwie möglich dieses Array auf einer tabelle mit JTabel auszugeben.

Freue mich über jede Hilfe.

mfg
Bene

Diese Frage taucht immer wieder auf, vielleicht bietet sich ein Tutorial dazu an...
Sorry, Dir das haarklein zu erklären dauert zu lange. Schau mal im Archiv / Suche nach TableModel. Diese Krücke mit Array habe ich mir jedenfalls schon lange abgewöhnt...
 
in
Code:
text[i]
sind die einzelnen worte aus der txt file gespeichert.

ich habe das mit dem txt mal gelassen und mich einfach mal an eine einfache tabelle mit menüleiste gemacht. diese will ich nach und nach modifizieren. Das Problem ist gerade, dass meine tabelle nicht automatisch die scrollbar mit einbindet :
Code:
		JMenuBar menu = new JMenuBar(); //Menüleiste erstellen
		setJMenuBar(menu);
		JMenu datei = new JMenu("Datei");
		JMenu bearbeiten = new JMenu("Bearbeiten");
		JMenuItem öffnen = new JMenuItem("Öffnen");
		JMenuItem beenden = new JMenuItem("Beenden");
		JMenuItem kopieren = new JMenuItem("Kopieren");
		JMenuItem einfügen = new JMenuItem("Einfügen");
		
		//Items zur Leiste hinzufügen
		datei.add(öffnen);
		datei.add(beenden);
		bearbeiten.add(kopieren);
		bearbeiten.add(einfügen);
		menu.add(datei);
		menu.add(bearbeiten);
		
		 //Tabelle einfügen
		CustomModel meins = new CustomModel();
		JTable table = new JTable(meins);
		table.setSelectionBackground(Color.black);
		table.setSelectionForeground(Color.white);
		table.setColumnSelectionAllowed(true);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
	
		 //ScrollPanel erstellen
		JPanel panel = new JPanel();
		JScrollPane scroll = new JScrollPane(table);
		panel.setLayout(new BorderLayout());
		panel.add(scroll, BorderLayout.CENTER);
		
	                     getContentPane().add(table);

Ich weiß nicht wo der Fehler liegt.die Menüleiste sitzt perfekt, aber die Scrollbar wird bei der Vergrößerung des Fensters nicht eingefügt.

wäre dankbar für tips.

mfg

Bene
 
Hallo!

Code:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class JTableTextDemo extends JFrame {

	private JTable table;
	private JScrollPane scrollPane;
	private String filePath = "c:/Data.csv";
	private JButton btnLoad, btnSave;
	private Object[] tableHeader;
	private static final char SEPARATOR_CHAR = ';';
	private boolean occupied = false;

	public JTableTextDemo() {
		super("JTableTextDemo");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		init();

		setVisible(true);
		pack();

	}

	/**
	 * 
	 */
	private void init() {

		ActionListener listener = new ActionHandler();

		btnLoad = new JButton("Load");
		btnLoad.addActionListener(listener);
		getContentPane().add(btnLoad, BorderLayout.CENTER);

		btnSave = new JButton("Save");
		btnSave.addActionListener(listener);
		getContentPane().add(btnSave, BorderLayout.SOUTH);

		table = new JTable(0, 0);

		table.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent evt) {
				int code = evt.getKeyCode();
				if (code == KeyEvent.VK_ENTER || code == KeyEvent.VK_TAB) {
					int row = table.getSelectedRow();
					int column = table.getSelectedColumn();
					(
						(DefaultTableModel) table
							.getModel())
							.fireTableCellUpdated(
						row,
						column);
				}

			}
		});

		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		scrollPane = new JScrollPane(table);
		getContentPane().add(scrollPane, BorderLayout.NORTH);

	}

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

	private Object[][] readData() {
		File file = new File(filePath);

		BufferedReader br = null;
		try {

			br = new BufferedReader(new FileReader(file));
			String line = null;
			StringTokenizer tokenizer = null;
			int clmCnt = 0;
			List list = new ArrayList();

			while ((line = br.readLine()) != null) {
				tokenizer = new StringTokenizer(line, ";");
				clmCnt = tokenizer.countTokens();
				Object[] rowData = new Object[clmCnt];
				int i = 0;
				while (tokenizer.hasMoreTokens()) {
					rowData[i++] = tokenizer.nextElement();
				}
				list.add(rowData);
			}
			tableHeader = new Object[clmCnt];
			for (int i = 0; i < tableHeader.length; i++) {
				tableHeader[i] = "Column" + i;
			}

			int size = list.size();
			Object[][] rows = new Object[size][];
			for (int i = 0; i < size; i++) {
				rows[i] = (Object[]) list.get(i);
			}

			list.clear();

			return rows;

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}

		return new Object[0][0];
	}

	public void store() {
		BufferedWriter bw = null;
		File file = new File(filePath);
		try {
			bw = new BufferedWriter(new FileWriter(file));

			DefaultTableModel dtm = (DefaultTableModel) table.getModel();
			Object[] oa = dtm.getDataVector().toArray();
			for (int i = 0; i < oa.length; i++) {
				Object[] o = ((Vector) oa[i]).toArray();
				for (int j = 0; j < o.length; j++) {
					bw.write(o[j].toString());
					bw.write(SEPARATOR_CHAR);
				}
				bw.newLine();
			}

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (bw != null) {
				try {
					bw.flush();
					bw.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}
	}

	class ActionHandler implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			Object src = e.getSource();
			if (src == btnLoad) {
				if (occupied)
					return;
				SwingUtilities.invokeLater(new Runnable() {
					public void run() {
						occupied = true;
						DefaultTableModel dtm =
							new DefaultTableModel(readData(), tableHeader);
						table.setModel(dtm);
						occupied = false;
					}
				});

			} else if (src == btnSave) {
				if (occupied)
					return;
				SwingUtilities.invokeLater(new Runnable() {
					public void run() {
						occupied = true;
						store();
						occupied = false;
					}
				});
			}
		}
	}
}

data.csv
Code:
1;2;3;4;5;6;7
3;5;7;9;11;13;7
8;12;16;20;24;20;3
20;28;36;44;44;23;3
48;64;80;88;67;26;2
112;144;168;155;93;28;11
256;312;323;248;121;39;5
568;635;571;369;160;44;6

HTH
Gruß Tom
 
wahnisinn. hätt ich jetzt nicht erwartet.zumal ich mich in das meiste erst reinarbeiten muss... :-| .

ICh versteh jetzt aber nicht, warum das so auch ohne TableModel geht?Wo sagst du denn dem Compiler
"Bau ein Table mit so viel Spalten und so viel zeilen mir dem und dem inhalt?"

ist das alles in der read Funktion?
 
Hallo Mr. Tom, unser Java Profi,
ich habe eine CSV-Datei ausgelesen und erst mal wieder in eine CSV-Datei gespeichert später soll ich die Daten in eine Jtable ausgeben.bevor ich den Schritt mache muss ich die Daten sortieren.
hier eine Auschnitt der CSV-Datei vor dem auslesen:
Auftraggeber Material Periode OAuftMnge OAuftMnge Off.Auftrg Off.Auftrg Um Netto1 Um Netto1 Gu Netto1 Gu Netto1
11010 Müller Mustermann A 2004.10 21 ST 0 $ 0 $ 0 $
11010 Hartmann GmbH A 2005.10 40 ST 0 $ 0 $ 0 $
11010 Oliver Jansen B 2002.01 51 ST 0 $ 0 $ 0 $
11011 Bernd Muster C 2003.11 1 ST 0 $ 0 $ 0 $
11011 Bernd Hans D 2005.12 11 ST 0 $ 0 $ 0 $
11010 Müller Mustermann A 2001.04 0 ST 0,00 $ 0 $ 0 $
11010 Hartmann GmbH C 2001.04 11 ST 0,00 $ 0 $ 0 $
11010 Oliver Jansen F 2001.04 1 ST 0 $ 0 $ 0 $
11011 Bernd Muster D 2005.05 0 ST 0 $ 1.020,00 $ 0 $
diese ist als CSV gespeichert. d.h. mit ";" getrennt.

also wichtig ist für mich das 2 und 3 Feld: also Material und Menge die möchte ich sortiert und summiert: z.B.: vom Material A haben wir 4 in Menge unsw.

diese sortierte Daten möchte anschliessend in JTable einfach anzeigen.

bitte um Hilfe. Falls Du den kompletten Code braucht kann ich Dir per e-mail schicken! ich denke das ist die Arbeit con minuten wenn Du dir mal den Code schaust.
danke noch mal im voraus
 
Zuletzt bearbeitet:
Hasba hat gesagt.:
Hallo Mr. Tom, unser Java Profi,
ich habe eine CSV-Datei ausgelesen und erst mal wieder in eine CSV-Datei gespeichert später soll ich die Daten in eine Jtable ausgeben.bevor ich den Schritt mache muss ich die Daten sortieren.

diese sortierte Daten möchte anschliessend in JTable einfach anzeigen.

bitte um Hilfe. Falls Du den kompletten Code braucht kann ich Dir per e-mail schicken! ich denke das ist die Arbeit con minuten wenn Du dir mal den Code schaust.
danke noch mal im voraus

Also zumindest eine (allgemeine) Sortierung in Tabellen nach Spaltenklick (http://www.java-forum.org/de/viewtopic.php?t=7704) ist nicht gerade trivial und auch nicht "mal eben" in einer Stunde erledigt.
 
Zurück