[Java lista] swing feliratok nagyítása

istvan.ketler at lhsystems.com istvan.ketler at lhsystems.com
2009. Jún. 23., K, 06:25:50 CEST


Szia,

Szerintem ne foglalkozz a kulcsok neveivel. Az UIManagertől kérd el az UIDefaults-ot (ez odaadja mind a hármat), majd iterálj végig rajta, és ha a kapott elem instanceof Font, akkor növeld meg meg méretét.

Valami ilyesmi (személy szerint nem akarok módosítani egy hashmap-et, miközben iterálok a kulcsain - egyébként sem akarok arról tudni, hogy hashmap, csak arról, hogy iterálhatók a kulcsok), csak persze newFont helyett a kapott fontot módosítsd mondjuk a font.deriveFont(float) hívással:

	public synchronized void setApplicationMainFont(final Font newFont) {
		UIDefaults defaults = UIManager.getDefaults();
		List<Object> keyList = new ArrayList<Object>();
		Enumeration<Object> keys = defaults.keys();
		while (keys.hasMoreElements()) {
			Object key = keys.nextElement();
			Object value = defaults.get(key);
			if ((value != null) && (value instanceof Font)) {	// Yeah, I know. But hags do exist.
				keyList.add(key);
			}
		}
		for (Object key : keyList) {
			UIManager.put(key, null);			// clear the developer default
			Font font = UIManager.getFont(key);
			if (font != null) {
				UIManager.put(key, new FontUIResource(newFont));
			}
		}
		SwingUtilities.invokeLater(new Runnable() {

			public void run() {
				SwingUtilities.updateComponentTreeUI(getBaseComponent());
			}
		});
	}

A nullt azért teszi be, hogy a "developer defaults" értéket nullázza. Ezután a getFont visszatér a L&F defaulttal, vagy a system defaulttal. Ha egyik sincs, akkor az valami saját font volt. Persze dönthetsz úgy, hogy azt is megtartod (megnövelve vagy eredetiben). Nekem ilyenem nem lehet, ha mégis van, akkor az kidobandó.

A getBaseComponent() a GUI root component-tel térjen vissza (JFrame, de ha több root window-d van, akkor mindegyikre meg kell csinálni). Ez főleg akkor fontos, ha a GUI már inicializálva van - viszont nincs garancia arra, hogy adott L&F esetén működni fog. Legjobb, ha megjelenítés előtt csinálod meg, de már az L&F betöltése után.

Üdvözlettel,

Ivan


 
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria Kft, Budapest, Fövarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Monika Houck

-----Original Message-----

From: javalist-bounces at javagrund.hu [mailto:javalist-bounces at javagrund.hu] On Behalf Of Andras Suller
Sent: Monday, June 22, 2009 11:52 PM
To: javalist at javagrund.hu
Subject: Re: [Java lista] swing feliratok nagyítása

Szia,

2009/6/22 zamek <zamek at vili.pmmf.hu>:
> Zsombor írta:
>> 2009/6/22 Andras Suller <suller.andras at gmail.com 
>> <mailto:suller.andras at gmail.com>>
>>     Azt a feladatot kaptam, hogy az egyik swing-es alkalmazásban 
>> mindenhol
>>     növeljem meg a betűméreteket, mert a felhasználó nem látja rendesen.
>>     Van-e erre valami megoldás, azon kívül, hogy a gui designer-ben
>>     átírogatom mindenhol?
> property file0ban lehet tarolni es kivulrol parameterezni. Nekem 
> erintokepernyo miatt sokszor kellett kivulrol allitgatni.
> A programod elejen olvasd fel a property file idevago reszet es
>
> UiManager.getDefaults().put(fontNev, size)
>
> Sajnos arra nezve nem talaltam doksit, hogy hogy kell nevezni az egyes 
> widget-eket, de amiket megtalaltam az idemasolom:
>

Köszönöm, ez a módszer jónak tűnik. A kulcsok neveit például a javax.swing.plaf.basic.BasicLookAndFeel fájlban lehet megtalálni:

Button.font
CheckBox.font
CheckBoxMenuItem.font
ColorChooser.font
ComboBox.font
EditorPane.font
FormattedTextField.font
Label.font
List.font
PopupMenu.font
Menu.font
MenuBar.font
MenuItem.font
RadioButton.font
RadioButtonMenuItem.font
OptionPane.font
Panel.font
PasswordField.font
ProgressBar.font
ScrollPane.font
Slider.font
Spinner.font
TabbedPane.font
Table.font
TableHeader.font
TextArea.font
TextField.font
TextPane.font
TitledBorder.font
ToggleButton.font
ToolBar.font
ToolTip.font
Tree.font
Viewport.font

Üdv: psmith
_______________________________________________
Javalist mailing list
Javalist at javagrund.hu
http://javagrund.hu/mailman/listinfo/javalist


További információk a(z) Javalist levelezőlistáról