Moin,
ich habe ein Formular mit einigen Textfeldern. Wenn ein feld den Focus bekommt, soll
es eine Hintergrundfarbe bekommen. Verliert das Feld den Focus, so verliert das Feld auch
die Farbe.
Jetzt habe ich einen Itertator erstellt. Das ist wahrscheinlich schwachsinn, da man wohl
besser eine Arraylist nimmt und das Iterieren darüber laufen läßt ? !
Jeden falls funktioniert der Iterator nur, wenn ich jedermal, wenn etwas passiert
eine neue Liste erstellt wird:
der code:
Bearbeitung des Focuslisteners
Und außerdem verzögert sich focusLost und einen Klick. Erst wenn das dritte Feld angeklickt wird,
wird das erste Feld wieder weiss.
Über Hinweise würde ich mich freuen..
Danke
Gruß
Jörn
ich habe ein Formular mit einigen Textfeldern. Wenn ein feld den Focus bekommt, soll
es eine Hintergrundfarbe bekommen. Verliert das Feld den Focus, so verliert das Feld auch
die Farbe.
Jetzt habe ich einen Itertator erstellt. Das ist wahrscheinlich schwachsinn, da man wohl
besser eine Arraylist nimmt und das Iterieren darüber laufen läßt ? !
Jeden falls funktioniert der Iterator nur, wenn ich jedermal, wenn etwas passiert
eine neue Liste erstellt wird:
der code:
Code:
package GUI;
import java.util.ArrayList;
import javax.swing.JTextField;
public class GUIiterator implements Iterator {
ArrayList Elemente;
int position = 0;
public GUIiterator(ArrayList Elemente)
{
this.Elemente = Elemente;
}
public JTextField next()
{
JTextField textfeld = (JTextField) Elemente.get(position);
position = position + 1;
return textfeld;
}
public boolean hasNext()
{
if (position >= Elemente.size() || Elemente.get(position) == null)
{
return false;
}else {
return true;
}
}
}
Code:
package GUI;
import javax.swing.JTextField;
public interface Iterator {
boolean hasNext();
JTextField next();
}
Bearbeitung des Focuslisteners
Code:
public void focusGained(FocusEvent e) {
it = new GUIiterator(a);
while(it.hasNext())
{
JTextField f = (JTextField) it.next();
if (e.getSource()== f)
{
f.setBackground(Color.gray);
}
}
}
public void focusLost(FocusEvent e) {
it = new GUIiterator(a); < -- Das muss sein, sonst passiert nichts
while(it.hasNext())
{
JTextField f = (JTextField) it.next();
if (e.getSource()!= f)
{
f.setBackground(Color.white);
}
}
}
Und außerdem verzögert sich focusLost und einen Klick. Erst wenn das dritte Feld angeklickt wird,
wird das erste Feld wieder weiss.
Über Hinweise würde ich mich freuen..
Danke
Gruß
Jörn