Hallo Leute,
ich habe eine HashMap und möchte die Daten gern in eine JTable bekommen...hänge an dem Problem schon mehere Tage...dreh hier bald durch...
Ich habe eine einfache Ausgabe auf der Konsole implementiert...Ich wäre echt sehr froh wenn ihr mir helfen könntet...vielen dank...MFG icerice
Folgender Code:
ich habe eine HashMap und möchte die Daten gern in eine JTable bekommen...hänge an dem Problem schon mehere Tage...dreh hier bald durch...
Ich habe eine einfache Ausgabe auf der Konsole implementiert...Ich wäre echt sehr froh wenn ihr mir helfen könntet...vielen dank...MFG icerice
Folgender Code:
Code:
import java.io.*; import java.util.*; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class Table extends JPanel { private boolean DEBUG = false; public Table() { super(new GridLayout(1,0)); String[] columnNames = {"Name", "Häufigkeit"}; Object[][] data = { {"Hallo","HUHU"} }; final JTable table = new JTable(data, columnNames); table.setPreferredScrollableViewportSize(new Dimension(500, 70)); table.setFillsViewportHeight(true); if (DEBUG) { table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { printDebugData(table); } }); } //Create the scroll pane and add the table to it. JScrollPane scrollPane = new JScrollPane(table); //Add the scroll pane to this panel. add(scrollPane); } private void printDebugData(JTable table) { int numRows = table.getRowCount(); int numCols = table.getColumnCount(); javax.swing.table.TableModel model = table.getModel(); System.out.println("Value of data: "); for (int i=0; i < numRows; i++) { System.out.print(" row " + i + ":"); for (int j=0; j < numCols; j++) { System.out.print(" " + model.getValueAt(i, j)); } System.out.println(); } System.out.println("--------------------------"); } /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI() { //Create and set up the window. JFrame frame = new JFrame("Testat OOP 2"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create and set up the content pane. Table newContentPane = new Table(); newContentPane.setOpaque(true); //content panes must be opaque frame.setContentPane(newContentPane); //Display the window. frame.pack(); frame.setVisible(true); } public static void main(String[] args) { if(args.length != 1) { System.out.println("Aufruf: <Dateiname>"); System.exit(0); } // Datei einlesen StringBuilder text = new StringBuilder(); try { BufferedReader reader = new BufferedReader( new FileReader(args[0])); String line; while((line = reader.readLine()) != null) text.append(line + "\n"); } catch(Exception e) { e.printStackTrace(); } // Statistik erstellen HashMap<String, Integer> statistic; statistic = WordStatistics.countWords(text.toString()); // Statistik ausgeben System.console().printf("\n Anzahl unterschiedlicher Wörter: %d\n", statistic.size()); Set<String> wordSet = statistic.keySet(); Iterator<String> it = wordSet.iterator(); while(it.hasNext()) { String word = it.next(); int num = statistic.get(word).intValue(); System.console().printf(" %s : %d \n", word, num); } //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } } class WordStatistics { /** * Erstellt eine Wortstatistik; Rückgabe ist eine Auflistung aller * vorkommenden Wörter und ihrer Häufigkeit; Satzzeichen und gängige * Sonderzeichen werden ignoriert. * * @param text zu analysierender Text * @return HashMap<String, Integer> mit Wörtern und ihren Häufigkeiten */ public static HashMap<String, Integer> countWords(String text) { StringTokenizer st = new StringTokenizer(text, "\n\" -+,&%$§.;:?!(){}[]"); HashMap<String, Integer> wordTable = new HashMap<String, Integer>(); while(st.hasMoreTokens()) { String word = st.nextToken(); Integer num = wordTable.get(word); if(num == null) { // bisher noch nicht vorhanden -> neu einfügen mit Zählwert = 1 num = new Integer(1); wordTable.put(word, num); } else { // Wort bereits vorhanden -> Zähler erhöhen int numValue = num.intValue() + 1; num = new Integer(numValue); wordTable.put(word, num); } } return wordTable; } }
Comment