【问题标题】:Get layout constraints for a component in Java Swing在 Java Swing 中获取组件的布局约束
【发布时间】:2013-08-20 03:51:48
【问题描述】:

下面是我一直在编写的代码模型。



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)

有什么方法可以让我们以编程方式获取我们设置的constraints,例如getConstraints(...),以便我们以后使用它?

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

之后我要做什么

 Object constraintsForNamePanel = 

获取namePanel 的约束。

目前,我正在使用

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

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

【问题讨论】:

    标签: java swing layout constraints miglayout


    【解决方案1】:

    得到了解决方案,我必须做以下事情。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-12
      • 2011-12-12
      • 1970-01-01
      • 2018-07-05
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多