M
masterdot
Gast
hallo ersteinmal...
ich brauche hilfe...
es geht um folgendes:
die aufgabenstellung war ein t9 system mit einer auswahlliste.
es funktioniert soweit alles, nur bekomme ich die auswahl aus der auswahlliste nicht in die hauptgui weitergerreicht.
es sieht folgendermassen aus:
es wird ein woerterbuch erzeugt, dieses wird an die grafische oberflaeche weitergegeben.
in der grafischen oberflaeche wird eine eingaberoutine erzeugt
dann wird von der grafischen oberflaeche per keylistener ein zeichen abgefangen und an die eingabe routine uebermittelt:
input ist hier das feld wo der text rein kommt.
das zeichen wird dann an die funktion EingabeZeichen weitergegeben.
das zeichen wird an den string daswort angefuegt und dann in die funktion SucheWort weitergegeben.
der resultierende vector enthaelt die position der treffer im gesamten woerterbuch und wird in suchvec uebertragen.
dann wird der suchvec ueberprueft.
wenn er mehr als 0 elemente hat, wird dann die AusgabeMoeglichkeitenfunktion aufgerufen
die auswahlliste bekommt als parameter die eingaberoutine mitgegeben wegen dem suchvector.
dann baut sie anhand des suchvectors ein neues fenster auf und fuegt die elemente des suchvectors ein.
hierzu ziehe ich mir folgendes rueber:
wenn waehrend der darstellzeit des fensters der auswahlliste eine taste gedrueckt wird, wird per keylistener der timer angehalten, der dafuer sorgt, das sich das fenster schliesst, wenn nichts passiert, und es kommt ein eingabedialog:
soweit so gut... es geht, der index wird richtig angesprochen, es ist das richtige element und so weiter...
bloss wie bekomme ich jetzt diesen index da wieder raus?
was ich bis jetzt versucht habe:
- direkten zugriff auf die hauptoberflaeche
fehlgeschlagen
- weiterleiten zu der eingaberoutine
fehlgeschlagen
zudem finde ich komisch, das der suchvector zwar modifiziert wird, aber der aufbau abgeschlossen ist, bevor diese eingabe ueberhaupt abgefruehstueckt ist...
nach meinem bisherigen verstaendnis ( arbeite noch nicht so lange mit der gui) sollte doch erst der block mit der ausgabemoeglichkeiten abgearbeitet werden, dann der block mit dem suchvec.size() kommen.
aber irgendwie kommt das nicht so wirklich an.
hat jemand eine ahnung wie ich das hinbekomme?
ich hoffe das die fragmente ausreichen um einen ueberblick zu bekommen, wollte der uebersichtlichkeit nicht den ganzen code posten...
wenn fragen sind, ich heute oefters hier am gucken, weil ich dringenst eine loesung brauche.. sonst kann ich das haken...
danke schonmal im voraus fuer jeden erdenklichen tip ( ausser das alles zu muellen ) [/code]
ich brauche hilfe...
es geht um folgendes:
die aufgabenstellung war ein t9 system mit einer auswahlliste.
es funktioniert soweit alles, nur bekomme ich die auswahl aus der auswahlliste nicht in die hauptgui weitergerreicht.
es sieht folgendermassen aus:
es wird ein woerterbuch erzeugt, dieses wird an die grafische oberflaeche weitergegeben.
in der grafischen oberflaeche wird eine eingaberoutine erzeugt
Code:
eingabe = new EingabeRoutine(dictionary);
dann wird von der grafischen oberflaeche per keylistener ein zeichen abgefangen und an die eingabe routine uebermittelt:
Code:
public void keyReleased(KeyEvent e)
{
[...]
input.setText(eingabe.EingabeZeichen(e.getKeyChar(), this));
// das eingegebene zeichen und die grafische oeberflaeche wird uebergeben
[...]
validate();
}
input ist hier das feld wo der text rein kommt.
das zeichen wird dann an die funktion EingabeZeichen weitergegeben.
Code:
String EingabeZeichen(char zeichen, GrafischeOberflaeche haupt)
{
[...]
suchvec = SucheWort(daswort);
if (suchvec.size() > 0)
{
AusgabeMoeglichkeiten(haupt); // aufruf der auswahlliste
// sonst das erste wort nehmen das gefunden wurde
int stelle = Integer.parseInt((String) suchvec.elementAt(0));
einwort = dictionary[stelle].StringHolen();
if (suchvec.size() == 1)
{
daswort = "";
einwort = dictionary[stelle].StringHolen();
[...]
}
}
[...]
return einwort;
}
das zeichen wird an den string daswort angefuegt und dann in die funktion SucheWort weitergegeben.
Code:
Vector SucheWort(String suchwort)
{
Vector funde = new Vector();
int menge = dictionary.length;
for (int i = 0; i < menge; i++)
{
[...]
}
return (funde);
}
der resultierende vector enthaelt die position der treffer im gesamten woerterbuch und wird in suchvec uebertragen.
Code:
suchvec = SucheWort(daswort);
dann wird der suchvec ueberprueft.
Code:
if (suchvec.size() > 0)
{
AusgabeMoeglichkeiten(haupt);
[...]
wenn er mehr als 0 elemente hat, wird dann die AusgabeMoeglichkeitenfunktion aufgerufen
Code:
void AusgabeMoeglichkeiten(GrafischeOberflaeche haupt)
{
if (suchvec.size() > 1)
{
AuswahlListe liste = new AuswahlListe(this);
}
}
die auswahlliste bekommt als parameter die eingaberoutine mitgegeben wegen dem suchvector.
dann baut sie anhand des suchvectors ein neues fenster auf und fuegt die elemente des suchvectors ein.
hierzu ziehe ich mir folgendes rueber:
Code:
[...]
this.haupt = haupt; // die eingabe routine
this.suchvec = haupt.suchvec; // der suchvector der eingaberoutine
this.dictionary = haupt.dictionary; // das woerterbuch
[...]
wenn waehrend der darstellzeit des fensters der auswahlliste eine taste gedrueckt wird, wird per keylistener der timer angehalten, der dafuer sorgt, das sich das fenster schliesst, wenn nichts passiert, und es kommt ein eingabedialog:
Code:
public void keyPressed(KeyEvent arg0)
{
String wahl = JOptionPane.showInputDialog(null, "Ihre Auswahl:");
try{
[...]
auswahl = Integer.parseInt((String)suchvec.elementAt(stelle));
suchvec.removeAllElements();
suchvec.addElement(auswahl + "");
[...]
}catch (NumberFormatException e)
{
dispose();
}
soweit so gut... es geht, der index wird richtig angesprochen, es ist das richtige element und so weiter...
bloss wie bekomme ich jetzt diesen index da wieder raus?
was ich bis jetzt versucht habe:
- direkten zugriff auf die hauptoberflaeche
fehlgeschlagen
- weiterleiten zu der eingaberoutine
fehlgeschlagen
zudem finde ich komisch, das der suchvector zwar modifiziert wird, aber der aufbau abgeschlossen ist, bevor diese eingabe ueberhaupt abgefruehstueckt ist...
Code:
suchvec = SucheWort(daswort);
if (suchvec.size() > 0)
{
AusgabeMoeglichkeiten(haupt); // aufruf der auswahlliste
// sonst das erste wort nehmen das gefunden wurde
int stelle = Integer.parseInt((String) suchvec.elementAt(0));
einwort = dictionary[stelle].StringHolen();
if (suchvec.size() == 1)
{
daswort = "";
einwort = dictionary[stelle].StringHolen();
[...]
}
}
[...]
nach meinem bisherigen verstaendnis ( arbeite noch nicht so lange mit der gui) sollte doch erst der block mit der ausgabemoeglichkeiten abgearbeitet werden, dann der block mit dem suchvec.size() kommen.
aber irgendwie kommt das nicht so wirklich an.
hat jemand eine ahnung wie ich das hinbekomme?
ich hoffe das die fragmente ausreichen um einen ueberblick zu bekommen, wollte der uebersichtlichkeit nicht den ganzen code posten...
wenn fragen sind, ich heute oefters hier am gucken, weil ich dringenst eine loesung brauche.. sonst kann ich das haken...
danke schonmal im voraus fuer jeden erdenklichen tip ( ausser das alles zu muellen ) [/code]