public PropertySheet(Class[] types, Object[] values)
    {
        this.values = values;
        editors = new PropertyEditor[types.length];
        setLayout(new FormLayout());
        for (int i = 0; i < values.length; i++)
        {
            JLabel label = new JLabel(types[i].getName());
            add(label);
            if (Grid.class.isAssignableFrom(types[i]))
            {
                label.setEnabled(false);
                add(new JPanel());
            }
            else
            {
                editors[i] = getEditor(types[i]);
                if (editors[i] != null)
                {
                    editors[i].setValue(values[i]);
                    add(getEditorComponent(editors[i]));
                }
                else
                    add(new JLabel("?"));
            }
        }
    }