Java jTable данные из объектов ArrayList и обновление из других методов - PullRequest
0 голосов
/ 06 июля 2011

Я новичок в Java GUI и пытаюсь работать с jTable в SWING.В настоящее время у меня есть один, который я сделал, следуя руководству Oracle, и он получает данные таблицы с помощью:

Object[][] data = {
    {"Kathy", "Smith",
     "Snowboarding", new Integer(5), new Boolean(false)},
    {"John", "Doe",
     "Rowing", new Integer(3), new Boolean(true)},
    {"Sue", "Black",
     "Knitting", new Integer(2), new Boolean(false)},
    {"Jane", "White",
     "Speed reading", new Integer(20), new Boolean(true)},
    {"Joe", "Brown",
     "Pool", new Integer(10), new Boolean(false)}
};

У меня есть объект с именем Orders, который имеет ArrayList (productsInOrder), который содержит неограниченное количество Projectобъекты.Я пытаюсь получить таблицу для отображения каждого из следующих для каждого объекта в ArrayList.productsInOrder.getPrice () productsInOrder.getSKU () productsInOrder.getName ()

Может кто-нибудь указать мне правильное направление?Или свяжите меня с руководством, которое может помочь, поскольку я просматривал весь Интернет и не могу понять это.

Наконец, у меня есть где-то еще слушатель действия, который добавляет больше объектов Product в ArrayList, когдапользователь выполняет определенные действия.Как бы я обновил jTable?Просто перезагрузив весь jTable в слушателе действия или есть способ просто добавить еще одну строку в таблицу?

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

Или свяжите меня с учебником, который может помочь

Учебник, который вы прочитали, - это учебник, который должен вам помочь.

Основным решением является создание пользовательской TableModel. В примере они хранят данные в двумерном массиве. В вашем случае данные будут храниться в ArrayList. Поэтому вам нужно изменить метод getVAlueAt () для доступа к ArrayList вместо 2D-массива.

Наконец, в другом месте у меня есть прослушиватель действий, который добавляет больше объектов Product в ArrayList, когда пользователь выполняет определенные действия.

Ваш код должен обновлять TableModel, а не ArrayList. Затем модель стола оповестит таблицу. Это означает, что вам нужно реализовать метод addRow (...) в вашей пользовательской TableModel.

Для более сложного решения вы можете создать общую модель таблицы, которую можно использовать. См. Модель таблицы компонентов для примера такого подхода. Пример кода JButtonTableModel показывает, как вы можете дополнительно настроить BeanTableModel только для интересующих вас свойств.

0 голосов
/ 06 июля 2011

Полное руководство по Swing Джона Жуковского - отличный ресурс по SwingВсе очень методично, с соответствующими примерами.Настоятельно рекомендую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...