Announcement

Collapse
No announcement yet.

Hashmap in JTable

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hashmap in JTable

    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:

    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;
    	}
    }

  • #2
    RTFM:

    http://java.sun.com/docs/books/tutor...nts/table.html

    insbesondere solltest Du Dir alles über TableModel genauer ansehen.

    Comment

    Working...
    X