Как заставить 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)? Меня больше волнует высота. Я могу установить фиксированную ширину для него.
1 ответ
Я добавил frame.pack();
и это сработало. Извините, это моя ошибка. SwingMetaWidget действительно возвращает правильный предпочтительный размер. Приношу извинения всем, кто мог потратить время на это из-за моей ошибки.