समस्या का उपयोग कर रहा है कि JTextArea JTextField तुलना में एक अलग डिफ़ॉल्ट फ़ॉन्ट का उपयोग करता है। मुझे एक ऐसे ऐप्लिकेशन में एक ही समस्या थी जिसे मैंने लिखा था जिसे बहु-भाषाओं का समर्थन करना था।
आपकी समस्या के लिए कारण यह है कि आम तौर पर ऐसे JTextArea कूरियर न्यू रूप में एक मोनो स्थान दिया गया है फ़ॉन्ट, दिखाने के लिए इस्तेमाल किया जाता है। आम तौर पर जावा में कांजी प्रदर्शित करने के लिए एक मोनो-स्पेस ग्राफिकल फ़ॉन्ट के लिए कोई अतिरिक्त मैपिंग नहीं होती है।
आपके द्वारा तय किया गया फ़िक्स, क्योंकि "123" नामक कोई फ़ॉन्ट नहीं है, इसलिए डिफ़ॉल्ट लिया जाता है (संवाद)। "संवाद" फ़ॉन्ट को आपके प्लेटफॉर्म की font.properties फ़ाइल में एक फ़ॉन्ट परिवार में आंतरिक रूप से मैप किया गया है। यह वही फ़ॉन्ट होगा जो JTextField का उपयोग करता है।
मैं यह सुनिश्चित करना है कि एक ही फॉन्ट परिभाषा सभी चित्रमय घटकों में प्रयोग किया जाता है, तो निम्न ठीक है। आप JTextArea के लिए विशिष्ट कुंजी भी ढूंढ सकते हैं और इसे बदल सकते हैं। इस तरह आपको किसी भी घटक के फोंट के बारे में चिंता करने की ज़रूरत नहीं है, उन्हें संवाद के साथ शुरू किया जाएगा।
Object fontDefinition = new UIDefaults.ProxyLazyValue("javax.swing.plaf.FontUIResource", null, new Object[] { "dialog", new Integer(Font.PLAIN), new Integer(12) });
java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof javax.swing.plaf.FontUIResource) {
UIManager.put(key, fontDefinition);
}
}
स्रोत
2009-04-06 12:27:51
आप किस प्लेटफ़ॉर्म का उपयोग कर रहे हैं? विंडोज? लिनक्स? – Peter