2012-05-08 10 views
6

के साथ काम नहीं करता है मेरे पास JTextField है और मैं मार्जिन सेट करना चाहता हूं। लेकिन जब मैं कोई सीमा निर्धारित करता हूं, तो यह ठीक से काम नहीं करता है। यह मार्जिन फ़ंक्शन काम नहीं करता है। यह मेरा कोड है;JTextField मार्जिन सीमा

import java.awt.Color; 
import java.awt.Insets; 
import java.io.IOException; 

import javax.swing.BorderFactory; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 

public class ImageField { 

public static void main(String[] args) throws IOException { 

    JTextField textField = new JTextField(); 
    textField.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY)); 
    textField.setMargin(new Insets(0, 20, 0, 0)); 
    JOptionPane.showMessageDialog(null, textField, "", 
      JOptionPane.PLAIN_MESSAGE); 
    } 
} 

तो मैं इस लाइन commant, यह काम करता है

//textField.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY)); 
+0

मैं इस यौगिक सीमा thingy प्यार करता हूँ, जब यह जब से तुम इसके साथ एक खाली सीमा निर्दिष्ट कर सकते हैं सेटिंग्स करने के लिए सीमाएँ आता है, और यह सेटिंग के रूप में किसी के लगभग एक ही प्रभाव देता है मार्जिन चीज़ :-) –

उत्तर

5

JavaDoc से पढ़ें।

टेक्स्ट घटक की सीमा और उसके पाठ के बीच मार्जिन स्थान सेट करता है। टेक्स्ट घटक का डिफ़ॉल्ट सीमा ऑब्जेक्ट उचित मार्जिन बनाने के लिए इस मान का उपयोग करेगा। हालांकि, यदि टेक्स्ट घटक पर एक गैर-डिफ़ॉल्ट सीमा सेट की गई है, तो यह है कि उचित मार्जिन स्पेस बनाने के लिए सीमा ऑब्जेक्ट की ज़िम्मेदारी है (अन्यथा इस संपत्ति को प्रभावी रूप से अनदेखा कर दिया जाएगा)। यह घटक के एक redraw का कारण बनता है। एक संपत्ति परिवर्तन घटना ("मार्जिन") सभी श्रोताओं को भेजी जाती है।

आप शायद एक यौगिक सीमा के लिए देख रहे हैं:

BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.DARK_GRAY), 
       BorderFactory.createEmptyBorder(0, 20, 0, 0)); 
15

मार्जिन है सीमा के साथ कुछ समस्या है, समस्या आप एक CompoundBorder आंतरिक बॉर्डर के रूप में एक EmptyBorder और वांछित सीमा की स्थापना का उपयोग कर कोशिश कर सकते हैं के आसपास काम करने के लिए (आपके मामले में लाइनबॉर्डर) बाहरी सीमा के रूप में।

इस तरह काम करना चाहिए:

Border line = BorderFactory.createLineBorder(Color.DARK_GRAY); 
Border empty = new EmptyBorder(0, 20, 0, 0); 
CompoundBorder border = new CompoundBorder(line, empty); 
textField.setBorder(border); 
+0

महान। यह काम करता हैं। बहुत सारे जवाब धन्यवाद। – querman

संबंधित मुद्दे