2013-08-18 10 views
6

में किसी घटक के लिए लेआउट बाधाएं प्राप्त करें नीचे कोड का एक नकली है जिसे मैं काम कर रहा हूं।जावा स्विंग



public class Pane { 

    private final JPanel pane; 
    private JPanel namePanel; 
    private final JTextField panIdField; 

    public Pane() { 
     pane = new JPanel(); 
     pane.setLayout(new MigLayout("", "[][grow]", "[][][][][]")); 

     namePanel = new JPanel(); 
     pane.add(namePanel, "cell 1 1,growx"); 

     panIdField = new JTextField(); 
     pane.add(panIdField, "cell 1 2,growx"); 
     panIdField.setColumns(10); 

    } 

    public void replaceNameField(JPanel newNamePanel) { 
     this.namePanel = newNamePanel; 
     // Object constraintsForNamePanel = 
     pane.remove(namePanel); 
     pane.add(newNamePanel, constraintsForNamePanel); 
    } 

} 

कंटेनर में विधि

public void add(Component comp, Object constraints) 

है वहाँ किसी भी तरह से है कि हम प्रोग्राम के constraints हम सेट कि, getConstraints(...) ताकि हम बाद में उपयोग के लिए उपयोग कर सकते हैं की तरह प्राप्त कर सकते हैं है?

मेरे कोड में, मैं इसे एक पुराने स्थान को एक ही स्थान पर बदलने के लिए इसका उपयोग करना चाहता हूं।

क्या कर रहा के बाद

Object constraintsForNamePanel = 

namePanel के लिए बाधाओं को पाने के लिए क्या करना है।

वर्तमान में, मैं

pane.add(newNamePanel, "cell 1 1,growx"); 

उपयोग कर रहा हूँ यह काम कर रहा है लेकिन समस्या यह है मैं यूआई के लिए WindowsBuilder उपयोग कर रहा है कर रहा हूँ और मेरे यूआई की तरह है जब मैं pane करने के लिए नए घटक जोड़ने बदलने के लिए और मैं डॉन ' टी बाधाओं को कॉपी और पेस्ट करना चाहते हैं।

उत्तर

7

समाधान मिला, मुझे निम्नलिखित करना पड़ा।


public void replaceNameField(JPanel newNamePanel) { 
    MigLayout layout = (MigLayout) pane.getLayout(); 
    Object constraintsForNamePanel = layout.getComponentConstraints(this.namePanel); 
    pane.remove(this.namePanel); 

     this.namePanel = newNamePanel; 
     pane.add(newNamePanel, constraintsForNamePanel); 
    } 
संबंधित मुद्दे