Как заставить MetaWidget Swing динамически регулировать его размер

Я использую SwingMetaWidget. В моем коде у меня есть диалоговое окно, к которому я динамически передаю объект домена, что приведет к разному количеству компонентов на основе объекта домена. Я хотел бы, чтобы метавиджет возвращал его предпочитаемый размер на основе результатов проверки. Как я могу этого добиться. Чтобы проиллюстрировать мою точку зрения, давайте посмотрим на пример 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);' Рама полностью разваливается и ничего не показывает. Изображение Свернутой Рамки

Есть ли способ показать достаточно JFrame, чтобы увидеть все компоненты Metawidget(мне нужно будет вызвать pack() JFrame)? Меня больше волнует высота. Я могу установить фиксированную ширину для него.

Изображение JFrame с нужным размером

1 ответ

Я добавил frame.pack(); и это сработало. Извините, это моя ошибка. SwingMetaWidget действительно возвращает правильный предпочтительный размер. Приношу извинения всем, кто мог потратить время на это из-за моей ошибки.

Другие вопросы по тегам