2011-02-10 2 views
1

У меня есть несколько классов с полями и геттерами/сеттерами, и я хочу отображать поля класса в приложении Swing.Отображение содержимого класса в графическом интерфейсе с Swing

Имя каждого поля должно быть представлено в формате Label, и значение должно отображаться в зависимости от типа значения, i. е. String использует TextField, List использует ComboBox и так далее.

Одна из трудностей состоит в том, что класс может содержать поля, которые также необходимо обрабатывать самим образом.

Есть ли рекомендуемый/стандартный способ сделать это?

Я немного посмотрел на java.beans, но я не уверен, что он не используется в первую очередь, когда класс является компонентом Swing.

ответ

4

Другой вариант - использовать компонент PropertySheet от L2FProd. Из вашего описания он должен делать именно то, что вы хотели.

Он не обновлялся в течение длительного времени, но хорошо работает.

enter image description here

2

Я не думаю, что есть автоматизированный способ достижения этого. На самом деле, я думаю, вы, возможно, даже приблизитесь к нему неправильно. Что делать, если в списке List есть объекты, отличные от строк, например, как JComboBox собирается нарушить это? Я бы предложил просто использовать JTable и поставить имя в первом столбце и значение во втором столбце.

2

Вы можете добавить @Annotations в свои поля, которые хотите изучить и отобразить в графическом интерфейсе. В каждом случае вам нужно использовать отражения для доступа и найти все поля, которые вы хотите отобразить. Я думаю, вы должны добавить пользовательскую логику к привязке данных, которая исследует данный класс для его полей (возможно, фильтруется с помощью аннотации @Display или тому подобного).

Это должно быть очень легко реализовать, вы можете положиться на определение POJO Bean и получить доступ ко всем полям по getter/setter, не забывайте кэшировать обработанные классы, чтобы избежать круговых зависимостей классов.

Надеюсь, это поможет.

0

Существует ReflectionUI. Он может отображать объекты и списки примитивных значений, просто используя отражение. Он хорошо работает с свойствами геттера/сеттера.

+0

Не указывайте только ссылку, но, пожалуйста, добавьте здесь более подробную информацию. – abarisone

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