PDA

View Full Version : [Java] LookAndFeel


spv42
26-04-2007, 18:40
Salve,

Volevo sapere se è possibile ricavare il Font (a me serve la Dimendione) usato da un determinato LookAndFeel.

Grazie.

PGI-Bis
26-04-2007, 19:21
Font font = ilLookAndFeel.getDefaults().getFont(chiave);

chiave è una stringa che identifica il font. Ad esempio "Button.font", "CheckBox.font"...

Se vuoi il font nel laf corrente:

UIManager.getLookAndFeelDefaults().getFont

spv42
26-04-2007, 19:29
Come sempre puntuale.

Grazie Mille.

spv42
27-04-2007, 10:23
Se vuoi il font nel laf corrente:

UIManager.getLookAndFeelDefaults().getFont

Il Metodo getFont() sembra non esistere. :muro:

lovaz
27-04-2007, 10:57
Eccolo qua:
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/UIDefaults.html#getFont(java.lang.Object)

spv42
27-04-2007, 11:32
Eccolo qua:
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/UIDefaults.html#getFont(java.lang.Object)

Non mi sembra lo stesso metodo. :D

PGI-Bis
27-04-2007, 11:37
E' quello. In che senso sembra non esistere?

spv42
27-04-2007, 12:13
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/UIDefaults.html

PGI-Bis
27-04-2007, 13:37
Parlare, comunicare, dire. Non incollare collegamenti. :D

L'acqua bagna, il fuoco scotta e gli oggetti della classe UIDefaults hanno un metodo

public Font getFont(Object key)

Dati questi inconfutabili fatti, perchè mi dici che il metodo in questione sembra non esistere? Ottieni qualche errore in compilazione? Se sì, puoi incollare la traccia dell'errore? Parlami. :D.

spv42
27-04-2007, 13:59
Ok

Allora ho installato un LookAndFeel proprietario. (Liquid)

Ecco io vorrei sapere la dimensione del font utilizzato nelle tabelle.

Grazie.

PGI-Bis
27-04-2007, 14:05
Nel main scrivi:

System.out.println(UIManager.getLookAndFeelDefaults().getFont("Table.font"));

e lanci il programma con:

java -Dswing.defaultlaf=com.birosoft.liquid.LiquidLookAndFeel blabla.Main

spv42
27-04-2007, 14:39
Nel Main ho scritto:
System.out.println(javax.swing.UIManager.getLookAndFeelDefaults().getFont("Table.font").getFontName());

ma mi stampa Dialog.plain

Invece mi sembra che sia Helvetia. :muro:

PGI-Bis
27-04-2007, 16:34
Se ti sembra diverso probabilmente lo è davvero. Si vede che quel LookAndFeel usa un Font diverso da quello della tabella per la proiezione del contenuto delle celle. Puoi provare con:

JTable table = new JTable();
TableCellRenderer renderer = table.getDefaultRenderer(Object.class);
if(renderer instanceof JComponent) {
System.out.println((JComponent)renderer).getFont());
}

e vedi cosa salta fuori.

spv42
27-04-2007, 16:41
Stessa cosa:

javax.swing.plaf.FontUIResource[family=Dialog,name=Dialog,style=plain,size=12]

PGI-Bis
27-04-2007, 16:54
Sicuro di avere impostato il look and feel prima di invocare quel codice? Ho fatto un esperimento e mi risulta che:

1. con il look and feel predefinito il font è:

javax.swing.plaf.FontUIResource[family=Dialog,name=Dialog,style=bold,size=12]

2. cambiando il look and feel (es. substance):

java -Dswing.defaultlaf=org.jvnet.substance.SubstanceLookAndFeel

risulta:

javax.swing.plaf.FontUIResource[family=Tahoma,name=Tahoma,style=plain,size=11]

Ma può anche essere che il font usato da liquid sia il Dialog.

spv42
27-04-2007, 17:01
Questo è il mio codice:

javax.swing.UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
System.out.println(javax.swing.UIManager.getLookAndFeelDefaults().getFont("Table.font").getFontName());

PGI-Bis
27-04-2007, 17:10
Mo' scarico il look and feel e vediamo. Volevo giusto provarlo.

PGI-Bis
27-04-2007, 17:17
Liquid usa il Dialog, 12 Plain. Lo stesso di Ocean.

Ps.: se provo a lanciare il programma con il lookandfeel standard e con il lookandfeel liquid, si vede subito che i due font sono uguali.

spv42
27-04-2007, 18:19
Liquid usa il Dialog, 12 Plain. Lo stesso di Ocean.

Ps.: se provo a lanciare il programma con il lookandfeel standard e con il lookandfeel liquid, si vede subito che i due font sono uguali.

Mi sballa lo scrolling su una lista