如何让 Swing MetaWidget 动态调整其大小
How to get the Swing MetaWidget to adjust its size dynamically
我正在使用 SwingMetaWidget。在我的代码中,我有一个对话框,我动态地向其传递一个域对象,这将导致基于域对象的不同数量的组件。我希望 metawidget 根据检查结果 return 其 preferredSize。我怎样才能做到这一点。
为了说明我的观点,让我们看一下教程示例。
主要代码:
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 );' 行,Frame 将完全崩溃并且什么都不显示。
Image of Collapsed Frame
有没有办法只显示足够的 JFrame 以查看 Metawidget 的所有组件(我需要调用 JFrame 的 pack())?我比较在意身高。我可以给它设置一个固定的宽度。
我添加了 frame.pack();
并且成功了。对不起这是我的错。 SwingMetaWidget 确实返回了正确的首选大小。向因我的错误而可能为此花费时间的任何人道歉。
我正在使用 SwingMetaWidget。在我的代码中,我有一个对话框,我动态地向其传递一个域对象,这将导致基于域对象的不同数量的组件。我希望 metawidget 根据检查结果 return 其 preferredSize。我怎样才能做到这一点。 为了说明我的观点,让我们看一下教程示例。
主要代码:
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 );' 行,Frame 将完全崩溃并且什么都不显示。 Image of Collapsed Frame
有没有办法只显示足够的 JFrame 以查看 Metawidget 的所有组件(我需要调用 JFrame 的 pack())?我比较在意身高。我可以给它设置一个固定的宽度。
我添加了 frame.pack();
并且成功了。对不起这是我的错。 SwingMetaWidget 确实返回了正确的首选大小。向因我的错误而可能为此花费时间的任何人道歉。