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

标签 java swing metawidget

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

主要代码:

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

最佳答案

我添加了frame.pack();并且它起作用了。对不起这是我的错。 SwingMetaWidget 确实返回了正确的首选大小。向由于我的错误而可能在这方面花费时间的任何人表示歉意。

关于java - 如何让Swing MetaWidget动态调整其大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39222969/

相关文章:

java - 在运行 ActionEvent 之前 GUI 没有在视觉上更新

java - ImageLoader:连接超时

java - 如何根据用户的需要创建尽可能多的对象?

java - 当我们尝试将不相等的对象插入到 HashSet 中时,如何解决由于相同的 hashcode 值而导致的冲突?

java - 获取名称时出错 :value pair from JSON

java - 修复了 java 中 JScrollPane/JPanel 中的项目数

java - 如何去除 JInternalFrame 中的边框?

java - SwingMetawidget,值未绑定(bind)到 JComboBox

java - UI 验证在 Swing MetaWidget 中不起作用