Datei Auslesen und nach Reitern sortiert ausgeben

chinchiller

Grünschnabel
Hallo, ich habe leider ein Problem mit einem Programm....

...und zwar soll es grob gesagt aus einer txt Datei "Namen;Vornamen" auslesen und den
gelesenen Inhalt nach "Reitern" geordnet wiedergeben.

Bsp.: Musterman; Max --> erscheint unter dem Reiter "M"
 
Moin!
Und wo genau liegt dein Problem? Bzw. Was hast du denn bis jetzt schon gemacht?

*grüssle*
MeinerEiner
 
Das Problem liegt da, das ich die Datei zwar einlesen kann, aber es wird bei allen "Reitern" also A,B,C,...etc immer alles ausgegeben! Ich weiß also nicht, wie ich es hinbekommen, das ich dem Reiter A nur alle mit A anfangenden Nachnamen zuordne und den rest nicht!

Und was noch als kleines Schmankerl dazu kommt ist, das wenn ich den Reiter später mal änder also aus A, B --> AB machen möchte muss der Datensatz automatisch mitziehen!
 
Moin!
Dann poste doch mal die entsprechenden Codeteile, welche Probleme machen..

Und schließe den 2. Thread wieder. Du musst nicht zweimal einen Thread zu dem gleichen Thema eröffnen!

*grüssle*
MeinerEiner
 
Das ist ja genau das Problem. Ich weiß ja leider nicht genau wie ich es mit nem Vector anstellen soll...ich hätte es sonst mit ner Array List gemacht.

Also, so solls geordnet werden:
Code:
package gui;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class SwingFenster extends JFrame
{ 
  
  
   // Instanz- oder Membervariablen
  String[] karte = 
  {
	"A", "B","C",
    "D","E","F",
    "G","H","I",
    "J", "K", "L",
    "M","N","O",
    "PQ","R","ST","UVW","XYZ"
  };
    
  JPanel listPanel = new JPanel();
   
  /**
   * JList
   */
  JList[] jliste = new JList[karte.length];
   
  JListData dataModel = null;
   
   
   public SwingFenster()
   { // Konstruktor mit Parameter
     // Aufruf des Konstruktors der Oberklasse
     super("Swing Fenster");
     this.setJMenuBar(new Menu(this)); //legt die Bar auf das Panel
     Container cpane = this.getContentPane();
     GridBagLayout grid = new GridBagLayout();
     GridBagConstraints constraints = new GridBagConstraints();
     cpane.setLayout(grid);
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
     JTabbedPane tabbedPane = new JTabbedPane();
     for(int i=0; i < karte.length; i++)
     {
       JPanel panel = makeTextPanel();
       tabbedPane.addTab(karte[i],panel);
     }
     cpane.add(tabbedPane); // tabbedPane auf Panel legen
      
      // alles schön packen
     this.pack();       
   }// end of constructor

und so wird die Datei eingelesen:
Code:
package util;

import java.io.*;
import java.util.*;

public class Streams {
   
   static Vector lines=new Vector();
   
   //public static Vector Dateilesen(File Datei) {
   public static Vector Dateilesen() {
      
      /**
       * <b>Dateilesen(String Datei)</b><br>
       * Methode zum zeilenweisen Einlesen aus einer Datei und speichern in Vector
       * @param Datei (File) :
       *
       */
         try {
            BufferedReader reader = new BufferedReader(new FileReader("prog2Mappe.txt"));
            // muss noch geändert werden in geöffnete datei bzw zurückgeändert werden in Datei
            
            while (reader.ready()){
               String line=reader.readLine();
               lines.addElement(line);
            }
            
            reader.close(); 
          }
         catch(FileNotFoundException exp) {
            System.out.println("Fehler: "+ exp.getMessage());
         }
         catch(IOException exp) {
            System.out.println("Fehler: "+ exp.getMessage());
         }
         return lines;
        
      }

   public static Vector vectorlesen()
   {
      return lines;
   }
 
Das ist ja genau das Problem. Ich weiß ja leider nicht genau wie ich es mit nem Vector anstellen soll...ich hätte es sonst mit ner Array List gemacht.

Bezogen auf dein Problem, was kannst du denn mit einer ArrayList machen, was mit einem Vector nicht geht? Das musst du mir mal erklären...

Was das einsortieren angeht, ne ganz einfache quick and dirty Lösung wäre doch:
Code:
for(int i=0; i < karte.length; i++)
     {
       JPanel panel = makeTextPanel();
       for(int j=0; j < lines.size(); j++){
           char[] cr = karte[i].toCharArray();
           String line = lines.get(j);
           for(char c : cr){
              if(line.toCharArray()[0] == c){
              hier nun deine einfuege operation in das textpanel...
           
              }
           }
       }

    }
    tabbedPane.addTab(karte[i],panel);
     }

*grüssle*
MeinerEiner
 
Zurück