स्विंग अनुप्रयोगों के लिए, घटकों के लिए डिफ़ॉल्ट फ़ॉन्ट सेटिंग्स वर्तमान विषय में हैं और UIManager का उपयोग कर प्राप्त किया जा सकता है:जावा अन्य आवेदन के लिए कम से कम (या के लिए रेंज) फ़ॉन्ट आकार स्विंग
public class JavaTesting {
public static void main(String[] args) {
System.out.println(UIManager.get("Label.font"));
}
}
यह JAVA_HOME में समायोजित किया जा सकता/उदाहरण के लिए साथ आवेदनों की श्रृंखला के लिए lib/swing.properties:
swing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel
या के साथ आदेश पंक्ति पर सेट करें:
java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel MyApp
या एप्लिकेशन स्वयं ही इसे देखता है और महसूस करता है और यह मान कॉन्फ़िगरेशन (फ़ाइल) में कहीं भी संग्रहीत है। यह काम करता है, क्योंकि आवेदन नज़र सेट और खुद के लिए महसूस कर सकते हैं, जैसे:
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
यह सब अच्छा लग रहा है, लेकिन अनुप्रयोग अक्सर छोटे फोंट (जैसे महत्वहीन लेबल के लिए स्थिति पट्टी संदेश) या बड़े फ़ॉन्ट जरूरत है (कुछ शीर्षक के साथ लेबल)। क्या इसके लिए कोई अनुशंसित तरीका है?
Font tmp = (Font)UIManager.get("Label.font");
if (tmp != null) {
Font font = tmp.deriveFont(10.0f);
_statusBarFontInfo = new FontInfo(font);
}
इस उदाहरण कोड स्थिति पट्टी पूरी तरह से पढ़ने योग्य नहीं है, लेकिन ज्यादातर घटक: स्रोत कोड गिलहरी एसक्यूएल से नकल - उच्च घनत्व पर नजर रखने का एक उपयोगकर्ता के रूप में मैं, कि उपयोग कोड इस तरह जावा अनुप्रयोगों के बहुत त्यागने के लिए था नए, बड़े फ़ॉन्ट में समायोजित कर रहे हैं। 1.50 रेंज के साथ- एक बुरा कोडिंग habbit के रूप में लग रहा है -
मेरे अपने आवेदन बनाने के लिए, मैं कुछ अनुपात (विषय फ़ॉन्ट का उदाहरण 50% से 150%), लेकिन हार्डकोड 0.50 उपयोग कर सकते हैं। और यह उन अनुप्रयोगों के साथ समस्या को ठीक नहीं करता है जिनके लिए मेरे पास स्रोत कोड नहीं है। यह थीम/एल & एफ से संबंधित है (देखें & महसूस करें, देखो और महसूस करें)। उदाहरण:
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);
इससे पहले कि मैं स्विंग डिफ़ॉल्ट लोगों की जगह कस्टम घटक, या Graphics2D.setFont समायोजन, या किसी अन्य डरावना सामान की तरह कुछ बदसूरत हैक्स कोशिश यह पूछ लायक है। :-)
संपादित करें: केवल एक चीज मौजूद है, आकार भिन्नता है, जो केवल निम्बस थीम द्वारा समर्थित है। अनुमत मूल्य "मिनी", "छोटा", "नियमित", "बड़ा" हैं। उदाहरण:
JComponent mini = new JButton("mini");
mini.putClientProperty("JComponent.sizeVariant", "mini");
हालांकि, निंबस विषय के लिए स्रोत कोड की जांच कर रहे, यह संभव नहीं है बस इन मूल्यों को समायोजित करने के लिए है (उदाहरण के लिए "बड़ी" के लिए पैमाने पर करने के 150%), यह वास्तव में हार्ड-कोडेड है!
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;
यह मान ही बहुत उन्नत उपयोगकर्ता द्वारा संपादित किया जा सकता है (उदाहरण के लिए JAVA_HOME में लगातार पूल संपादित/lib/कहा जाता कार्यक्रम के साथ rt.jar "rej") - मैं इसे करने की कोशिश की, और यह काम करता है, लेकिन ऐसा नहीं
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);
}
निष्कर्ष: किसी: नहीं, जावा देखो, उदाहरण के लिए - 't क्योंकि वे वास्तव में हार्ड कोड किए गए हमेशा काम (!!) कई जगहों पर स्थिरांक (मानक पुस्तकालय यह वास्तव में अच्छी गुणवत्ता है?) और महसूस करता है कि अब इसका समर्थन नहीं करता है। मैं अनुपात का उपयोग करने का सुझाव देता हूं, उदा। 0.7 - 1।डिफ़ॉल्ट फ़ॉन्ट आकार के 3।
JLabel smallLabel = new JLabel("some text");
smallLabel.setFont(smallLabel.getFont().deriveFont(0.8f * smallLabel.getFont().getSize2D()));
[अच्छा सवाल +1] (http://stackoverflow.com/q/9958004/714968) – mKorbel
टैग निकालें "निम्बस"। थीम "निंबस" के साथ इसका कोई लेना-देना नहीं है, यह सिर्फ एक उदाहरण था। यह सभी विषयों से संबंधित है। – peenut
स्विंग में देखो और महसूस करें, थीम – mKorbel