2016-08-30 2 views
0

Я использую SwingMetaWidget. В моем коде у меня есть диалоговое окно, к которому я передаю объект домена динамически, и это приведет к разному количеству компонентов на основе объекта домена. Я хотел бы, чтобы метавиджет возвращал свой предпочтительный размер в зависимости от результатов проверки. Как я могу это достичь. Чтобы проиллюстрировать мою точку зрения, давайте рассмотрим пример учебника.Как получить Swing MetaWidget для динамического изменения его размера

Основной код:

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)? Меня больше беспокоит высота. Я могу установить для него фиксированную ширину.

Image of the JFrame with the right size

ответ

1

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

Смежные вопросы