2013-08-18 19 views
6

Aşağıda, üzerinde çalıştığım bir kod var. Kapsayıcı olarakJava Swing'te bir bileşen için düzen kısıtlamaları alın



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); 
    } 

} 

biz programlama yoluyla daha sonra kullanmak için kullanabilirsiniz, böylece getConstraints(...) gibi belirlediğimiz constraints olsun herhangi bir yolu var mı metot

public void add(Component comp, Object constraints) 

var?

Kodumda, eski bir bileşenin yerini yenisiyle değiştirmek için kullanmak istiyorum. ne yapıyoruz

Ben

Object constraintsForNamePanel = 

namePanel için kısıtlamaları olsun sonra yapmak zorundayız. Bu çalışıyor fakat 'Sorun UI için WindowsBuilder kullanıyorum ve benim UI gibi ben pane için yeni bileşenler eklemek değiştirmek ve don Şu

, ben

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

kullanıyorum Kısıtlamaları kopyalayıp yapıştırmak istiyorum.

cevap

7

Çözümü aldım, aşağıdakileri yapmak zorundaydım.


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); 
    } 
İlgili konular