Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

UIManager.put() dozvoljava duplikate !?!?!?

[es] :: Java :: UIManager.put() dozvoljava duplikate !?!?!?

[ Pregleda: 2471 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bobjan

Član broj: 27819
Poruke: 64
*.static.sbb.co.yu.

Jabber: bobjan@12jabber.com
Sajt: www.logotet.com


Profil

icon UIManager.put() dozvoljava duplikate !?!?!?05.10.2006. u 08:12 - pre 212 meseci
Hoću da postavim default fontove za neke komponente u aplikaciji i lepo uradim:
Code:
UIManager.put("Label.font", myFont); 


Ne radi! Čačakam da vidim šta je po sredi i nakon:
Code:
       Enumeration keys = UIManager.getDefaults().keys();
      while (keys.hasMoreElements()) {
              String key = (String) keys.nextElement();
                 System.out.println(key);
    } 

umalo se ne šlogirah kada sam video da imam dva "Label.font" ključa u Hashtabeli.
Prvo sam, naravno, pomislio da se negde krije neki nevidljivi karakter, gledao, više puta prekucavao iz početka i uvek isto.
Ima li neko ideju šta se dešava ?
Inače, za neke druge komponente radi kao što se i očekuje.
BTW, u pitanju je Java 1.5 na XP, a IDE je IntelliJ IDEA(mada na radi ni kada testiram van IDEa).

 
Odgovor na temu

bobjan

Član broj: 27819
Poruke: 64
*.static.sbb.co.yu.

Jabber: bobjan@12jabber.com
Sajt: www.logotet.com


Profil

icon Re: UIManager.put() dozvoljava duplikate !?!?!?06.10.2006. u 09:26 - pre 212 meseci
Evo jos malo koda:
Code:

import javax.swing.*;
import java.util.Enumeration;
import java.awt.*;


public class TestUIManager {
    public static void main(String[] args) {
        UIDefaults uid = UIManager.getDefaults();
        uid.remove("Label.font");
        UIManager.put("Label.font", new Font("Arial", Font.PLAIN,11));
        Enumeration keys = UIManager.getDefaults().keys();
        while (keys.hasMoreElements()) {
        String key = (String) keys.nextElement();
        int id = key.indexOf("Label.");
        if(id >= 0)
                System.out.println(":" + key);
    }
    }
}


Kada stavim prve dve linije, tj. kada uradim remove("Label.font"), radi lepo, ako ne uradim remove(),onda mi se ispise (lako je da se vidi, kratka je lista) dva puta element Hashtabele sa kljucem "Label.font".
Da li se to jos nekom dogadja, ne znam da li ima veze sa mojim okruzenjem ili je to prosto tako.
Ovo je ceo kod, ako nekog ne mrzi, neka proba pa kaze svoje misljenje.




 
Odgovor na temu

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.ispone.net.au.



+30 Profil

icon Re: UIManager.put() dozvoljava duplikate !?!?!?06.10.2006. u 12:46 - pre 212 meseci
Pogledaj ovo:

http://bdn.borland.com/article/29991


Poz
sale
Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

bobjan

Član broj: 27819
Poruke: 64
*.dynamic.sbb.co.yu.

Jabber: bobjan@12jabber.com
Sajt: www.logotet.com


Profil

icon Re: UIManager.put() dozvoljava duplikate !?!?!?07.10.2006. u 16:26 - pre 212 meseci
Hvala na linku, ali nije problem u ulozi klase UIManager već u tome što UIDefaults dozvoljava duple ključeve.
Kako UIDefaults nasleđuje Hashtable, za očekivanje je da ako uradiš
Code:

uid.put(kljuc, objekat);

u slučaju da već postoji objekat sa istim ključem, da se zameni.
Mozda je klasa UIDefaults redefinisala metodu put(...) iz nadklase Hashtable, ali me deluje nelogično, i nigde nisam to pročitao u dokumentaciji.
Primer koji sam postovao u prethodnom javljanju sam probao i na dva računara pod XP-om, i na Linuxu, i kroz IDE i van njega, i uvek mi javlja da imam dva objekta sa klučem "Label.font".
Probao sam i sa ključem "Label.background", i tada sam dobio duplikat!
Ja sam sa remove() pre put(), rešio problem što se tiče onog što hoću da postignem u aplikaciji, ali su mi ivi duplikati totalno nejasni, možda mi je promaklo nešto u dokumentaciji ili u članku čiji link je postovan, ali više mi liči na bug.
Zato, bio bih zahvalan da mi još neko potvrdi ili opovrgne ovo što ja dobijam, pre nego što reklamiram bug.
Poz.
 
Odgovor na temu

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.ispone.net.au.



+30 Profil

icon Re: UIManager.put() dozvoljava duplikate !?!?!?08.10.2006. u 02:16 - pre 212 meseci
Ja kad stavim:
Code:

UIManager.put("Label.font",new Font("Serif",Font.ITALIC,12));



On deluje na objekat ali nisam primecivao duple kljuceve tako da meni nije smetalo to sa istim...

Tvoj sam primer video i vidim da imaju dupli..

Mozda je to Bug ali nisam ja siguran posto u ovom dole primeru nema duplikata !!

Inace pogledaj ovaj primer gde nema duplikata:
Code:


import javax.swing.*;
import java.util.Enumeration;
import java.awt.*;
import javax.swing.plaf.*;


public class TestUIManager {
    
    public static void main(String[] args) {
    setUIFont (new FontUIResource("Arial",Font.ITALIC,15));
 
    }
    
  //Postavi default Font Za odredjenu komponentu  
public static void setUIFont (FontUIResource font){
    
    Enumeration keys = UIManager.getDefaults().keys();
        while (keys.hasMoreElements()) {
                String key = (String)keys.nextElement();
 
               int id = key.indexOf("Label.");
                  if(id >= 0) { 
                  
                      Object value = UIManager.get (key);
                    if (value instanceof FontUIResource) {
                        // Menjamo Font samo za Label.
                        UIManager.put (key, font);  
                    }
                   System.out.println(":" + key + " Label Font =>" +  UIManager.getFont(key));
                  }  
                   
                   // Proveri za List. - Font je ostao onaj koji je po Defaultu ( Naravno da je ostao)
                  int id1 = key.indexOf("List.");
                  if(id1 >= 0) {    
                  System.out.println(":" + key + " List Font =>" +  UIManager.getFont(key));
                  }
                  
          }
    } 
 

}



Poz
sale
Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

[es] :: Java :: UIManager.put() dozvoljava duplikate !?!?!?

[ Pregleda: 2471 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.