The*_*ect 6 java layout swing constraints miglayout
下面是我一直在研究的代码模拟.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在容器中有方法
public void add(Component comp, Object constraints)
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以我们以编程方式获得constraints我们设置的内容,getConstraints(...)以便我们可以将它用于以后使用?
在我的代码中,我想使用它在同一个地方用新的组件替换旧组件.
我该怎么办?
Object constraintsForNamePanel =
Run Code Online (Sandbox Code Playgroud)
得到约束namePanel.
目前,我正在使用
pane.add(newNamePanel, "cell 1 1,growx");
Run Code Online (Sandbox Code Playgroud)
它正在工作,但问题是我WindowsBuilder用于UI,我的UI就像在我添加新组件时更改,我pane不想复制和粘贴约束.
得到了解决方案,我必须做到以下.
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);
}
Run Code Online (Sandbox Code Playgroud)