java - 获取 Java Swing 中组件的布局约束

标签 java swing layout 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);
    }

}

Container中有方法

public void add(Component comp, Object constraints)

有没有什么方法可以通过编程方式获取我们设置的约束,比如getConstraints(...),以便我们以后可以使用它?

在我的代码中,我想用它在同一个地方用新组件替换旧组件。

之后我要做什么

 Object constraintsForNamePanel = 

获取 namePanel 的约束。

目前,我正在使用

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

它正在工作,但问题是我正在为 UI 使用 WindowsBuilder,当我将新组件添加到 Pane 时,我的 UI 会发生变化,但我没有不想复制和粘贴约束。

最佳答案

找到解决方案,我必须执行以下操作。


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

关于java - 获取 Java Swing 中组件的布局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295353/

相关文章:

java - 在通常不呈现为标记的组件上设置的标记 id

Java XML 到数组

java - 接口(interface)方法Java中的泛型

java - 适用于 Android 的 OpenCL Java 绑定(bind)

java - JFrame.getContentPane() 和 JFrame.getRootPane() 有什么区别?

Java 数据绑定(bind)最佳实践

java - swing:JPanel 与模式/非模式对话框?

java - 在 FlowLayout 中并排嵌套多个 CardLayout

Java Swing BorderLayout resize困难

css - 等效于使用 Qt 或 GTK 生成平铺 png 的 CSS 网格模板列