Do zastosowań skrzydłowych, domyślne ustawienia czcionki dla komponentów są w tym temacie i mogą być pobierane za pomocą UIManager:Java Swing minimalny (lub zakres) wielkość czcionki dla innych aplikacji
public class JavaTesting {
public static void main(String[] args) {
System.out.println(UIManager.get("Label.font"));
}
}
To może być regulowana w JAVA_HOME/lib/swing.properties do różnych zastosowań, na przykład z:
swing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel
lub ustawiony w linii z poleceń:
java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel MyApp
Lub sama aplikacja zapamiętuje swój wygląd i ma tę wartość przechowywaną gdzieś w konfiguracji (pliku). To działa, ponieważ aplikacja może ustawić wygląd i dla siebie, np:
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
To wszystko wygląda ładnie, ale aplikacje muszą często mniejszych czcionek (np nieistotne wiadomość pasek stanu na etykiecie) lub większych czcionek (Etykieta z pewnym nagłówkiem). Czy jest jakiś zalecany sposób na to? Jako użytkownik monitora o wysokiej gęstości musiałem odrzucić wiele aplikacji java, że należy użyć kodu jak ten - źródło kod skopiowany z wiewiórki SQL:
Font tmp = (Font)UIManager.get("Label.font");
if (tmp != null) {
Font font = tmp.deriveFont(10.0f);
_statusBarFontInfo = new FontInfo(font);
}
Ten przykładowy kod sprawia, pasek stanu całkowicie nieczytelny, ale większość komponentów są dostosowane do nowej, większej czcionki.
Do tworzenia mój własny wniosek, że mogę korzystać z niektórych stosunek (na przykład 50% do 150% czcionki motywu), ale hardcoding 0,50 - 1,50 Zakres wygląda jako złe kodowania habbit również. I nie rozwiązuje problemu z aplikacjami, dla których nie mam kodu źródłowego. To należy do tematu/L & F (Look & Poczuj, Look and Feel). Przykład:
FontUIResource Label_font_resource = (FontUIResource)javax.swing.UIManager.get("Label.font");
Font Label_font = Label_font_resource;
Font Label_font_bigger = Label_font.deriveFont(Label_font.getSize2D() * 1.5f);
Warto pytać przed I spróbować brzydkie hacki jak niestandardowych składników zastępujących te domyślne huśtawka lub korekt Graphics2D.setFont lub jakiegokolwiek innego przerażające rzeczy. :-)
Edycja: jedyne co istnieje, to wariant rozmiaru, który jest obsługiwany tylko przez motyw Nimbus. Dozwolone wartości to "mini", "small", "regular", "large". Przykład:
JComponent mini = new JButton("mini");
mini.putClientProperty("JComponent.sizeVariant", "mini");
Jednak patrząc na kod źródłowy dla Nimbus tematu, to nie jest możliwe, aby po prostu dostosować te wartości (np skala do 150% w przypadku „dużych”), to rzeczywiście zakodowane!
package javax.swing.plaf.nimbus;
public final class NimbusStyle extends SynthStyle
{
public static final String LARGE_KEY = "large";
public static final String SMALL_KEY = "small";
public static final String MINI_KEY = "mini";
public static final double LARGE_SCALE = 1.15D;
public static final double SMALL_SCALE = 0.857D;
public static final double MINI_SCALE = 0.714D;
Wartość ta może być edytowane tylko przez bardzo zaawansowanego użytkownika (na przykład edytować stałą basen w JAVA_HOME/lib/rt.jar z programu o nazwie „Rej”) - próbowałem go, i to działa, ale to nie robi „t zawsze działa, bo rzeczywiście zakodowane (!!) na stałe w kilku miejscach (to jest naprawdę najwyższej jakości - standardowe biblioteki?), na przykład:
if ("large".equals(str))
{
this.scrollBarWidth = (int)(this.scrollBarWidth * 1.15D);
this.incrGap = (int)(this.incrGap * 1.15D);
this.decrGap = (int)(this.decrGap * 1.15D);
}
Konkluzja: nie, wygląd Java i czuć, nie obsługuje tego na razie. Proponuję użyć współczynników, np. 0,7 - 1.3 domyślnego rozmiaru czcionki.
JLabel smallLabel = new JLabel("some text");
smallLabel.setFont(smallLabel.getFont().deriveFont(0.8f * smallLabel.getFont().getSize2D()));
[ładny pytanie +1] (http://stackoverflow.com/q/9958004/714968) – mKorbel
Usunięto tag "Nimbus". To nie ma nic wspólnego z tematem "Nimbus", to był tylko przykład. Dotyczy WSZYSTKICH tematów. – peenut
w Swing są Look and Feel, nie motywy – mKorbel