Thursday, December 27, 2007

Jaki domyślnie jest kolor tła textFielda?

Problem jest taki:
Użyszkodnik wpisał coś do w textfielda i wpisał coś co się nie parsuje. Można mu jakiegoś popupa wyśwletlić, ale ja na przykład nie lubie popupów. Moje domyślne rozwiązanie jest takie że kiedy w polu jest coś bezsensu to jego tło staje się czerowne. Kiedy jest coś OK to tło wraca do domyślnej wartości. Tylko jaka jest ta domyslna wartość?

W zasadzie biały. Ale ja pare lat temu miałem ustawiony domyślny kolor tła na jasnoszary.

Na szczęście panowie z Suna pomyśleli (oni często myślą co wychodzi programistom javy na zdrowie) i zrobili coś takiego jak:
UIManager.getDefaults().

Czyli zwykłą Haszmapę<Object, Object> która zawiera wszystkie domyślne wartości wszystkiego.

Tylko jak sie do tego dobrać? Bo zgadywać klucz jakoś głupio...

Pierwsze podejście:
public class UIDefaultsPrint {
private static final java.util.logging.Logger log =
jbzdak.common.StuffFactory.make();

public static void main(String[] args) throws IOException {
Frame fr =new JFrame();
fr.add(new JTextField());
fr.setVisible(true);
UIDefaults defaults = UIManager.getDefaults();
File f = new File(".", "defaults.values");
BufferedWriter buffwr = new BufferedWriter(new FileWriter(f));
for(Map.Entry entry : defaults.entrySet()){
System.out.println(entry.getKey() + " " + entry.getValue());
buffwr.append("" + entry.getKey() + " " + entry.getValue() + "\n");
}
buffwr.close();
fr.dispose();

}
}


Nie zadziałało bo jakoś te defaulty są inicjalizowane leniwie, nie wiadomo kiedy.

Drugie podejście:
Google wypluły mi strone: http://dn.codegear.com/article/29991. No i tam jest program co pozwala to sobie łatwo te wartości znaleźć.
PS. Piszą tam że tzreba się za darmo zarejestrować żeby pobrać, ale zabezpieczenie działa na javaskrypcie (wyłączony) albo na jakimś Windzianym haku.