如何让Swing MetaWidget动态调整其大小

时间:2016-08-30 08:57:28

标签: java swing metawidget

我正在使用SwingMetaWidget。在我的代码中,我有一个Dialog,我动态地传递一个域对象,这将导致基于域对象的不同数量的组件。我希望metawidget根据检查结果返回其preferredSize。我怎样才能做到这一点。 为了说明我的观点,让我们看一下Tutorial示例。

主要代码:

package com.myapp;

import javax.swing.*;
import org.metawidget.swing.*;

public class Main {

    public static void main( String[] args ) {
        Person person = new Person();

        SwingMetawidget metawidget = new SwingMetawidget();
        metawidget.setToInspect( person );

        JFrame frame = new JFrame( "Metawidget Tutorial" );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.getContentPane().add( metawidget );
        frame.setSize( 400, 250 );
        frame.setVisible( true );
    }
}

域对象:

package com.myapp;

public class Person {
    private String  mName;
    private int     mAge;
    private boolean mRetired;

    public String getName() { return mName; }
    public void setName( String name ) { mName = name; }

    public int getAge() { return mAge; }
    public void setAge( int age ) { mAge = age; }

    public boolean isRetired() { return mRetired; }
    public void setRetired( boolean retired ) { mRetired = retired; }
}

如果我删除'frame.setSize(400,250);'框架完全折叠并且不显示任何内容。 Image of Collapsed Frame

有没有办法显示足够的JFrame来查看Metawidget的所有组件(我需要调用JFrame的pack())?我更关心身高。我可以为它设置一个固定的宽度。

Image of the JFrame with the right size

1 个答案:

答案 0 :(得分:1)

我添加了frame.pack();并且它有效。对不起这是我的错。 SwingMetaWidget确实返回了正确的首选大小。对由于我的错误可能花时间在这上面的人致歉。