Telefonbuch in J2ME programmieren HILFE!

Status
Nicht offen für weitere Antworten.

MC_Basstard

Mitglied
Hallo,

ich hoffe ihr könnt mir helfen.
Ich bin Azubi und hab die Aufgabe bekommen in Java n Telefonbuch fürs Handy zu erstellen wo sich alle Mitarbeiter mit ihren Nummern drin befinden.
Leider kenn ich mich mit J2ME garnich aus, da ich J2SE auch nich besonders kann hab ich quasi 0 Ahnung.
In meiner Arbeit kennt sich mit J2ME leider auch keiner aus Google war auch nicht mein Freund und bei Lycosiq und nem anderen J2ME Forum konnte mir bis jetzt irgendwie auch keiner helfen...

Ich hab bis jetzt ne Liste mit zwei Einträgen die man anklicken kann, wo sich dann ein neues Display öffnet (hoff des stimmt alles was ich da jetzt red xD).
Ich hab ne Textdatei, in der alle Mitarbeiter mit ihren Nummern dahinter drin stehen, und ich würde jetzt gern versuchen diese Textdatei in das Midlet einzubinden, das wenn ich auf Einträge ansehen klicke, dort dann alle Mitarbeiter + ihre Nummer dahinter angezeigt werden.

Hab mal irgendwas gehört das des mit Arrays geht oder mit Strings das es da iwie jede Zeile dan einliest oder so aber n Beispiel wie des aussehen muss oder wie des zusammenhängen muss hab ich bis jetzt leider auch nich gefunden.

Schonmal großen Dank im voraus!!

mfg Stefan
 

The_S

Top Contributor
In J2ME nimmste dafür ne <code>List</code> zum Anzeigen. Zwischenspeichern kannste das gern in nem Array. Les dir am Besten mal ein Einsteigerbuch durch. Oder bestell dir "Java goes Handy" für 0 Euro (siehe Werbung oben rechts im Forum).
 

MC_Basstard

Mitglied
jo ne List hab ich da scho ^^
Und es hieß irgendwie das man dan über Arrays jede Zeile der Textdatei in die List einlesen kann.

Wüsstest du da vlt ein kleines Beispiel dazu wie sowas funktioniert?
 

MC_Basstard

Mitglied
Ich hab die Textdatei mit den Namen der Mitarbeiter und ihren Telefonnummern dahinter.
Nun möchte ich den Inhalt in das Midlet einlesen das die Mitarbeiter mit ihren Nummern dahinter dan in der Liste stehtn.
 

The_S

Top Contributor
Textdatei kannst du über einen beliebigen Stream einlesen (muss mit im JAR liegen). Das eingelesene musst du dann irgendwie nach Mitarbeiter/Telefonnummer trennen (vermutlich dann beim Zeilenumbruch) und dann die einzelnen Elemente via
Code:
list.append
zur Liste hinzufügen.
 

MC_Basstard

Mitglied
aber wie kann man auf den inhalt der textdatei zugreifen?
da muss ich doch irgendwie angeben welche zeile in der Textdatei jetzt wo in der `Liste stehen soll oder?
 

The_S

Top Contributor
Eine Textdatei hat keine Zeilen. folglich kannst du auch nicht auf spezielle Zeilen zugreifen. Du musst die Textdatei soweit sequentiell auslesen, bis du an der gewünschten Stelle bist.
 

MC_Basstard

Mitglied
ah ok
und wie genau geht das?

sowas hier hab ich bis jetzt


Java:
  public void testList() 
    {
        list = new List("Auswahl", Choice.IMPLICIT);
        list.setTicker(new Ticker("das Telefonbuch"));
        list.addCommand(backCommand);
        list.setCommandListener(this);
        display.setCurrent(list);
        currentMenu = "list";
        
  
        
  // Datei einlesen 
        InputStream is = this.getClass().getResourceAsStream("/unbekannt-Telefonbuch.doc");
        DataInputStream dis = new DataInputStream(is); 
	      byte[] b = new byte[150]; 
	      zeichenkette="";
	      try {
	            if(is!=null){
	            	is.read(b);
	            	zeichenkette=zeichenkette+b.toString();
	            }
        	} 
        catch (IOException  ex) {
        	ex.printStackTrace();
        	} 
        list.append(zeichenkette, null);

    }
 

MC_Basstard

Mitglied
naja nich so ganz oder?
Weil beim normalen Java würd des pber FileReader gehen beim J2ME leider nicht. Deswegen hat mir da Java ist auch eine insel 8 leider auch nicht geholfen.
 

MC_Basstard

Mitglied
Aso...
omg
Dann muss ich quasi des Zeug was bei dem Java Blog Buch drinstehn hab alles um schreiben.
Ok des kann dauern ich meld mich wieder wenn ich irgendwas zamgebracht hab.
 

MC_Basstard

Mitglied
wenn man sich damit gscheid auskennt nich ^^
aba mal schaun was ich so zambring wenn ich nich weiterkomm meld ich mich wieder
 

MC_Basstard

Mitglied
so habs hinbekommen

nur wenn ich die Tabelle nun runterscroll zeigts nen Fehler an

arrayindexoutofboundsexception 3

Des laggt dann iwie beim scrolln und es verschwindet alles nur manches erscheint aba oft öfters als es sollte ka wie man des beschreiben soll aber wenn ich weiterscroll gehts aufeinmal irgendwo wieder normal weiter.
Kannste mir da weiterhelfen?

Das hab ich jetzt:

Java:
public Telefonbuch()
	{
		try {
			dateilesen();
			} 
		catch (Exception e){};
	}
		
		public void dateilesen() throws IOException
		{	
		
		DefaultTableModel model = new DefaultTableModel(
			new Object[0][4],  //  4 == Spaltenzahl 
			new String[]{null});
		    String[][] rowData = new String[5000][4];
		
		 	FileReader fr = new FileReader("C:/Temp/1-Telefonbuch.txt");	
			BufferedReader br = new BufferedReader(fr);
			String zeile;
			int i =0;
			while ( (zeile = br.readLine()) != null )
			{
			    String[] zeilenDaten = zeile.split(";");
			    rowData[i] = zeilenDaten;
			    i=i+1;
			}
			
		
	String[] columnNames = {
		"Name","Handynummer","Nummer","Abteilung"};
	
	frame.setDefaultCloseOperation(EXIT_ON_CLOSE );
	JTable table = new JTable( rowData, columnNames );
	frame.add( new JScrollPane(table) );
	frame.pack();
 	frame.setVisible( true );
 	frame.setSize(800,300);	
 	frame.setTitle("Telefonbuchtest");
 	frame.setResizable(true);
 	
 	
	}
 
Zuletzt bearbeitet:

MC_Basstard

Mitglied
stimmt...
is mir auch grad aufgefallen das ich hier ja im j2me Forum bin xD
sry
Hab mir jetzt mal gedacht ich versuchs erstmal aufn Pc bevor ich da am ´Handy was rummach.

Kann man mein Thema iwie verschieben und den Titel umbenennen?
 

MC_Basstard

Mitglied
Hallo Leute,
bin imma noch dabei n Telefonbuch zu machen xD
Versuche aber gerade, Daten aus ner txt Datei einzulesen. Hab hier was zamgeschrieben, was leider nich geht und vlt kann mir da nun jemand dabei helfen, dass es geht.


Das hier wär mal der Code wie ich im Java fürn PC aus einer .txt Datei den Text in eine Tabelle einlesen kann.
Diesen hab ich irgendwie versucht umzuschreiben, dass es für J2ME funktioniert, was mir leider nicht gelungen ist n Arbeitskollege hats versucht mir zu helfen ist aber auch gescheitert.

Java:
public Telefonbuch()
    	{
    		try {
    			dateilesen();
    			} 
    		catch (Exception e){};
    	}
    		
    		public void dateilesen() throws IOException
    		{	
    		
    			DefaultTableModel model = new DefaultTableModel(
    			new Object[0][2],  //  2 == Spaltenzahl 
    			new String[]{null});
    			
    		    String[][] rowData = new String[2000][2];
    		
    		 	FileReader fr = new FileReader("H:/Temp/Maya/workspace/EIGENES PROJEKT/Telefonbuch.txt");	
    			BufferedReader br = new BufferedReader(fr);
    			String zeile;
    			
    			int i =0;
    			while ( (zeile = br.readLine()) != null )
    			{
    			    String[] zeilenDaten = zeile.split(";");
    			    rowData[i] = zeilenDaten;
    			    i=i+1;
    			}
    			
     			
    			
    	String[] columnNames = {
    		"Name","Nummer"};
    	
    	frame.setDefaultCloseOperation(EXIT_ON_CLOSE );
    	JTable table = new JTable( rowData, columnNames );
    	}





Und hier is der Code fürs J2ME
Java:
// Datei einlesen 
    	public void loadlist(){
    		 System.out.println("bla");
        InputStream is = this.getClass().getResourceAsStream("buch.txt");
        //System.out.println(is.toString());
        StringBuffer sb = new StringBuffer();
        System.out.println("buffer");
          byte[] b = new byte[5000]; 
          System.out.println("buffer 0");
          zeichenkette="";
          System.out.println("buffer 1");
          try {
              int chars, i = 0;
              System.out.println("buffer 2");
              chars = is.read();
              System.out.println("buffer 3");
              while ((chars) != -1){
            	  System.out.println("loop");
            	  sb.append((char) chars);
            	  i=i+1;
              }
              is.close();
        	  zeichenkette=zeichenkette+b.toString();
              //return sb.toString();
        	} 
        catch (IOException  ex) {
        	ex.printStackTrace();
        	}
        System.out.println("bla");
        list.append(zeichenkette,null);
        //return null; 
		}

die System.out.println("..."); hab ich gemacht, da egal ob in Eclipse oder Netbeans der Debugger nicht funktionierte und ich so sehen konnte, wo das Programm nicht reingeht.

Dieser Fehler kommt immer:

bla
buffer
buffer 0
buffer 1
buffer 2
java.lang.NullPointerException
at handytest.handy.loadlist(+74)
at handytest.handy.commandAction(+4)
at javax.microedition.lcdui.List.callKeyPressed(+80)
at javax.microedition.lcdui.Display$DisplayAccessor.keyEvent(+198)
at javax.microedition.lcdui.Display$DisplayManagerImpl.keyEvent(+11)
at com.sun.midp.lcdui.DefaultEventHandler.keyEvent(+127)
at com.sun.midp.lcdui.AutomatedEventHandler.keyEvent(+210)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+114)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)




das heißt ab

chars = is.read();

machta nimma weiter aber was kann ich da jetzt genau machen find da leider keine Lösung dazu

MFG Stefan
 
M

MiDniGG

Gast
Code:
InputStream is = this.getClass().getResourceAsStream("buch.txt");
ist null. Deshalb auch die NullpointerException...

Liegt die Datei "buch.txt" auch direkt im bin-Ordner?

Also ich lese Textdateien in Java ME so ein:

Java:
DataInputStream dis = new DataInputStream(getClass().getResourceAsStream("/pfad/zur/datei/test.txt"));
StringBuffer sb = new StringBuffer();
int i = 0;
try {
   while((i = dis.read()) > -1) {
      sb.append((char)i);
   }
} catch (IOException e) {
   e.printStackTrace();
}

Dadurch steht der ganze Text der Datei dann schön im StringBuffer und ich kann damit Arbeiten...

Vllt. hilft das ja ;)

Edit: Wichtig auch der / vor dem Pfad!
 
Zuletzt bearbeitet von einem Moderator:

MC_Basstard

Mitglied
Ab der Zeile while((i = dis.read()) > -1) gehts iwie nich weiter also da geht er irgendwie nich rein.
is echt komisch habsj etzt so angegeben

Java:
 public void loadlist(){
    	DataInputStream dis = new DataInputStream(getClass().getResourceAsStream("D:Temp/buch.txt"));
    	StringBuffer sb = new StringBuffer();
    	int i = 0;
    	try {
    	   while((i = dis.read()) > -1) {
    	      sb.append((char)i);
    	   }
    	} catch (IOException e) {
    	   e.printStackTrace();
    	}
    }

hatte dafür zum überprüfen überall dazwischen System.out.println"..."; stehn damit ich wieder weiß wo er reingeht aba die Syste.out nach der zeile while((i = dis.read()) > -1) zeigts nimma an =(
 
M

MiDniGG

Gast
Also dass die Datei unter D:Temp/ ligt glaub nicht...

Wenn mich nicht alles täuscht kannst Du beim Handy sowieso nur relative Pfad gehen...
Leg die .txt einfach ins gleiche verzeichnis wie deine klasse(n) und ruf sie mit /buch.txt auf. (Wenn Du packages verwendest eben noch mit dem Pfad (ab /bin)).

Dass da nicht in die while-schleife gegangen wird liegt daran, dass es keine Daten zum Verarbeiten gibt. (Da i < 0)
 

MC_Basstard

Mitglied
ich brings einfach nich hin...

kann ich des so eigentlich in die liste einlesen?
was so n zeug angeht bin ich nich wirklich gut :-/


Java:
public void loadlist(){
    	DataInputStream dis = new DataInputStream(getClass().getResourceAsStream("/bin/handytest/buch.txt"));
    	StringBuffer sb = new StringBuffer();
    	int i = 0;
    	byte[] b = new byte[5000];
        zeichenkette="";
    	try {
    	   while((i = dis.read()) > -1) {
    	      sb.append((char)i);
    	      i=i+1;
    	   }
    	   dis.close();
    	   zeichenkette=zeichenkette+b.toString();
    	} catch (IOException e) {
    	   e.printStackTrace();
    	}
    	list.append(zeichenkette,null);
    }
 
M

MiDniGG

Gast
Prinzipiell müsste das mit der List gehen.
Jedoch bringt
Code:
list.append(zeichenkette, null);
nicht viel, da zeichenkette ja ein kompletter String ist. Somit würde in einer Zeile die komplette Textdatei stehen.
Zum Einlesen nochmal siehe j2meforum.org
 
M

MiDniGG

Gast
Also mit folgendem Code:

Java:
public class Handy extends MIDlet {
	Display	disp = null;
	List lList = null;
	public Handy() {
		disp = Display.getDisplay(this);
		lList = new List("Liste", List.IMPLICIT);
		loadlist();
	}
	public void loadlist() {
		DataInputStream dis = new DataInputStream(getClass().getResourceAsStream("/buch.txt"));
		StringBuffer sb = new StringBuffer();
		int i = 0;
		try {
			while((i = dis.read())>-1) {
				sb.append((char)i);
				i = i+1;
			}
			dis.close();
		} catch(IOException e) {
			e.printStackTrace();
		}
		lList.append(sb.toString(), null);
	}
	public void startApp() {
		disp.setCurrent(lList);
	}
	public void pauseApp() {}
	public void destroyApp(boolean unconditional) {}
}

...und der angehängten Ordnerstruktur geht alles ohne Probleme bei mir...
 

MC_Basstard

Mitglied
Großen Dank!

Jetzt muss ich nur noch herrausfinden wie ich jede Zeile aus der txt Datei in ne neue Zeile der Liste einfügen kann.
 
M

MiDniGG

Gast
Du prüfst einfach ob ein Zeilenumbruch vorhanden ist.

Weiß nicht ob das bei ME so geht, aber:

Java:
System.getProperties().getProperty("line.separator");

Und das dann eben in ein Array reinpacken. (ArrayLists gibts ja bei ME nicht)
 
M

MiDniGG

Gast
Dann musst Du entweder auf "\n" oder "\t\n" prüfen... Musst halt mal ein bisschen rumprobieren... :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
tuttle64 J2ME SDK starten Android & Cross-Platform Mobile Apps 4
F MIDLET Pascal statt J2ME? Android & Cross-Platform Mobile Apps 6
K mp3 datei in j2me abspielen Android & Cross-Platform Mobile Apps 16
P J2ME Code-Beispiele Android & Cross-Platform Mobile Apps 2
K Java ME J2ME Bluetooth - bluesoleil,bluecove, JSR82... ? Android & Cross-Platform Mobile Apps 6
G Java ME Tabelle in J2ME Android & Cross-Platform Mobile Apps 4
G J2me Wirlesstoolkit 2.5.2 Kompertibel zu Samsung SGH J700 Android & Cross-Platform Mobile Apps 2
K J2ME programmierung - startprobleme. Android & Cross-Platform Mobile Apps 7
B (J2ME) Welche IDE ? Android & Cross-Platform Mobile Apps 3
P J2ME - Anbindung an externe Datenbank Android & Cross-Platform Mobile Apps 3
M Welche Datenbank für J2ME? Android & Cross-Platform Mobile Apps 5
P Prob mit Eclipse und J2ME SDK Android & Cross-Platform Mobile Apps 4
T J2ME Frameworks und Librarys Android & Cross-Platform Mobile Apps 2
J image j2me Android & Cross-Platform Mobile Apps 2
D J2ME - Wie und welches Programm Android & Cross-Platform Mobile Apps 10
C JSR135 - Kamera in J2ME? Android & Cross-Platform Mobile Apps 4
A Hessian und J2ME Android & Cross-Platform Mobile Apps 3
G J2ME jar-problem Android & Cross-Platform Mobile Apps 10
Kidao Progress Bar in J2ME Android & Cross-Platform Mobile Apps 2
K XDA Orbit: Auslesen der GPS Daten mit J2ME Android & Cross-Platform Mobile Apps 2
D J2ME und Collections? Android & Cross-Platform Mobile Apps 5
R J2ME <-> Microsoft Message Queue (MSMQ) Android & Cross-Platform Mobile Apps 2
ARadauer j2me und mvc Android & Cross-Platform Mobile Apps 24
K Erste J2ME Applikation in NetBeans Android & Cross-Platform Mobile Apps 2
S Anfängerproblem mit ant+j2me Android & Cross-Platform Mobile Apps 2
D Kalenderwoche mit J2ME Android & Cross-Platform Mobile Apps 2
G Gibts das.Wo findet man die J2ME Gesamtdoku ? Android & Cross-Platform Mobile Apps 2
J J2ME Java Programm im Hintergrund auf Handy laufen lassen? Android & Cross-Platform Mobile Apps 2
S J2ME und J2EE Android & Cross-Platform Mobile Apps 4
B J2Me Buch? Android & Cross-Platform Mobile Apps 4
K HTTP-Verbindung mit J2ME.... Android & Cross-Platform Mobile Apps 2
S Einstieg in J2ME (Java2 MicroEdition) Android & Cross-Platform Mobile Apps 52
N Android game programmieren Android & Cross-Platform Mobile Apps 5
M SSH App programmieren Android & Cross-Platform Mobile Apps 22
TechnikTVcode In App Käufe Programmieren Android & Cross-Platform Mobile Apps 2
Jackii Android Android Studio Error im Testlauf ohne zu programmieren Android & Cross-Platform Mobile Apps 9
Excess Android Ballerspiel weiter programmieren Android & Cross-Platform Mobile Apps 4
R Android App mit Datenbankeinträgen und Math.random() Methode programmieren Android & Cross-Platform Mobile Apps 0
D Android Android Apps direkt vom Handy aus programmieren? Android & Cross-Platform Mobile Apps 2
V Android Android Programmieren-Objekt-Konstruktor in Klammern Android & Cross-Platform Mobile Apps 2
H Android Platzreservierungs App programmieren Android & Cross-Platform Mobile Apps 5
J Apps für Android programmieren - Android Handy notwendig oder reicht Simulator? Android & Cross-Platform Mobile Apps 3
J Wie schwer sind Apps zu programmieren? Android & Cross-Platform Mobile Apps 13
K Anwendung für Handy programmieren Android & Cross-Platform Mobile Apps 1

Ähnliche Java Themen

Neue Themen


Oben