vokabeltrainer

Status
Nicht offen für weitere Antworten.
S

schere

Gast
hi

ich habe ein problem und komme nicht weiter..
ich tu grad ein vokabeltrainer programmieren, der aus einer .txt datei die vokabeln liest.
soweit funktionier auch alles.
aber ich hab oben eine menübar und da hab ich verschiedene themen. jedes thema hat seine eigene .txt datei.

in der Steuerung sieht die realisierung um die txt datei zu laden so aus:
Code:
public void fuelleKarteiMitVokabeln(){
		String englisch, deutsch, zeile;
		int x;
		thema = dieBenutzerOberflaeche.getThema();
		System.out.println(thema);
		
		try{ BufferedReader datei = new BufferedReader (new FileReader("./"+thema+".txt"));
		while ((zeile = datei.readLine())!=null){
			x = zeile.indexOf("\t");
			deutsch = zeile.substring(0,x);
			englisch = zeile.substring(x+1);
			
			dieKartei.hinzufuegenVokabel(englisch, deutsch);
			
		}
		datei.close();
	}catch (IOException e) {e.printStackTrace();}
	}

in der oberfläche siehts beim menüitem so aus:

Code:
private JMenuItem getMniLektionE1() {
		if (mniLektionE1 == null) {
			mniLektionE1 = new JMenuItem();
			mniLektionE1.setText("Lektion Englisch");
			mniLektionE1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					String thema;
					thema = "vokabeln1";
					
				}
			});
			}
die übergabe erfolgt hier:

Code:
public String getThema()
	{
		return thema;
		}


das thema ist in der oberfläche so vordefiniert:
Code:
private String thema = "vokabeln";


so aber ich weis jetz nicht wie ich das machen kann dass wenn ich auf das menu item LektionE1 drück dass
dann die Kartei mit der neuen .txt datei geladen wird..

könnt ihr mir helfen
 

ARadauer

Top Contributor
wenn deine oberfläche einen verweis auf die steuerung hat, kannst du doch einfach fuelleKarteiMitVokabeln aufrufen oder?
in zeile 10 deines zweiten code stückes.

wenn deine oberfläche keinen verweis auf die steuerung hat, gib ihm beim erstellen einfach ein objekt von steuerung mit.
 
S

schere

Gast
meinst du so?

Code:
private JMenuItem getMniLektionE1() {
		if (mniLektionE1 == null) {
			mniLektionE1 = new JMenuItem();
			mniLektionE1.setText("Lektion 1");
			mniLektionE1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					sprache = "e";
					lektion = "Lektion 1";
					dieSteuerung.fuelleKarteiMitVokabeln();
				}
			});
			}
	
			return mniLektionE1;
			}

wenn ja so klappts auch nicht.. der hat immernoch die alten drin.
 
G

Guest

Gast
edit:

also er liest doch die neue textdatei ein. ABER er hat noch die vokabeln in der Vokabelliste von der alten Textdatei
also muss ich die Vokabelliste (Vokabel[]) irgendwie auf 0 setzen.

das ganze sieht so aus: in der Klasse Kartei:
Code:
public class Kartei {
	protected int derIndex;
	protected int dieAnzahl;
	private Vokabel[] dieVokabel;
	//	-----------------------------------

public Kartei(){
	dieAnzahl = 0;
	derIndex = 0;
	dieVokabel =new Vokabel[1000];
}
	//-----------------------------------
public int getDieAnzahl() {return dieAnzahl;}
	//-----------------------------------
public boolean hinzufuegenVokabel(String wort1, String wort2){
	boolean gelungen;
	
	if(dieAnzahl<=999){
		dieVokabel[dieAnzahl] = new Vokabel();
		dieVokabel[dieAnzahl].eintragenVokabel(wort1, wort2);
		dieAnzahl++;
		gelungen = true;
	}
	else gelungen = false;
	
	return gelungen;
	}
................
aber ich weis nicht wie ich die Liste auf 0 bekomme
 

Ariol

Top Contributor
Mach das ganze doch über eine Properties-Datei und die entsprechende Klasse Properties.
 

Ariol

Top Contributor
Öhm, doch nicht - hatte nen Denkfehler.

Aber eine ArrayList<Vokabel> wäre vielleicht sinnvoll.
Zum Hinzufügen musst du dann nur list.add(vokabel); benutzen.

Dann bist du nicht an eine bestimmte Anzahl an Variablen gebunden und brauchst auch keine Zählvariable.
 
S

schere

Gast
hi
danke
aber habs jetz anderst gelöst..

einfach ne methode lösche vokabeln und da die anzahl wieder auf 0 setzten dann werden alle überschrieben.
aber jetz müssten in jeder lektion gleich viele vokabeln drin sein weil wenn z.b. in der 1. lektion 20 vokabeln drin sind und in der 2. nur 10 dann werden nur die ersten 10 überschrieben. die andern 10 aus lektion 1 bleiben. mal guckn wie ich des noch hinbekomm.. evtl mit ner schleife oder so
 

NTB

Bekanntes Mitglied
Du kannst Dein Vokabel[] einfach neu initialisieren, dann wird es doch gelöscht.
 
S

schere

Gast
hi

wie genau?
hat bisher noch net geklappt so wie ich des gamcht hab
 

Ariol

Top Contributor
Code:
dieVokabel = new Vokabel[/*Hier deine neue Arraylänge rein*/];
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben