2013-08-18 23 views
6

Poniżej znajduje się makieta kodu, nad którym pracowałem.Pobierz ograniczenia układu dla komponentu Java Swing



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

} 

w zbiorniku jest metoda

public void add(Component comp, Object constraints) 

Czy jest jakiś sposób, że możemy programowo uzyskać constraints że ustawiony, jak getConstraints(...) tak, że można go używać w celu późniejszego użycia?

W moim kodzie chcę go użyć do zastąpienia starego komponentu nowym w tym samym miejscu.

Co muszę zrobić po

Object constraintsForNamePanel = 

dostać ograniczeń dla namePanel.

Obecnie używam

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

To działa, ale problem jest używam WindowsBuilder dla UI i mój UI jest jak zmienić kiedy dodać nowe elementy do pane i I don” t chcesz skopiować i wkleić ograniczenia.

Odpowiedz

7

Mam rozwiązanie, musiałem wykonać następujące czynności.


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