Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/43: Рейтинг темы: голосов - 43, средняя оценка - 4.53
 Аватар для waip
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297

Динамическое добавление колонок в JTable Swing

09.02.2014, 08:40. Показов 8345. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет) Использовал таблицы и раньше, но сейчас задача требует создания динамических колонок... Что я делаю:

Java
1
2
3
4
5
            TableColumn column = new TableColumn();
                     column.setHeaderValue(names[i]);
                    // column.setCellRenderer(table.getCellRenderer(0, 0));
                    // column.setHeaderRenderer(null);
                     table.addColumn(column);
Колонки создаются хорошо, но в чем состоит проблема. Предположим у меня есть 3 колонки.. чтобы их заполнить я создаю массив объектов размером 3. Запоняю массив и передаю его на добавление в таблицу.
В итоге я получаю NPE... Казалось бы.. в чем может быть дело, ведь массив не пустой и колонки существуют.
Однако.. Что я сделал потом. Через среду разработки создал одну статистическую колонку.. т.е колонка будет существовать всегда. И вот теперь я создаю массив уже на 4 ячейки. Примено выглядит он так

[0] = 1
[1] = 2
[2] = 3
[3] = 4

И теперь я пытаюсь его загнать в таблицу...Что же получается.. У меня хорошо запоняется первая статическая колонка, а все остальные заполняются тем же содержимым из первой колонки. Вот такие пироги... Возможно, что при создании колонки я забываю чтото указать...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2014, 08:40
Ответы с готовыми решениями:

JTable, swing, строки, таблицы, Добавление
Здравствуйте нужна помощь не пойму как сделать что бы данные введенные в jTextField записывались в таблицу. Например 3 столбца в таблице...

Динамическое добавление колонок
Помогите пожалуйста разобраться. Первая таблица добавляет колонку второй таблице, но колона не отображается. Что можно сделать чтобы...

Динамическое добавление колонок в DataGrid
Здравствуйте уважаемые форумчане. Как из кода добавить, скажем, два столбца в DataGrid? Есть вот такой код: DataGrid dg = new...

4
185 / 160 / 49
Регистрация: 30.07.2013
Сообщений: 508
12.02.2014, 19:51
может ты нам код покажешь?
мы запустим, посмотрим что не так, совет дадим. вы не злые, но и не телепаты
0
 Аватар для waip
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297
14.02.2014, 15:17  [ТС]
Это и есть весь код по существу.
Есть таблица JTable. Я создаю колонку и даю ей имя
TableColumn column = new TableColumn();
column.setHeaderValue("COL 1");
И после этого сажаю ее в таблицу.
table.addColumn(column);

Чисто визуально эту колонку видно, но если добавить содержимое... например
table.addRow(mass);
Где mass массив данных то ты получишь NPE как будто бы ее(колонки) и не существует....
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.02.2014, 14:13
waip, вот так отработало:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package easybudda.dynamiccolumns;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
 
public class DynamicColumns {
    private java.util.List<String> columnNames;
    private JTable table;
    private int rows = 10;
    private int columns = 1;
    private AbstractTableModel tableModel;
    
    @SuppressWarnings("serial")
    DynamicColumns() {
        columnNames = new java.util.LinkedList<String>();
        columnNames.add("Column #1");
        tableModel = new AbstractTableModel() {
            public int getRowCount() {
                return rows;
            }
            
            public int getColumnCount() {
                return columns;
            }
            
            public Object getValueAt(int r, int c) {
                return new Integer((c + 1) * 100 + r + 1);
            }
            
            public String getColumnName(int c) {
                return columnNames.get(c);
            }
        };
        
        table = new JTable(tableModel);
        table.setAutoCreateColumnsFromModel(true);
        table.setIgnoreRepaint(false);
        
        JButton button = new JButton("Add column");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                columnNames.add("Column #" + String.valueOf(++columns));
                tableModel.fireTableStructureChanged();
                table.repaint();
            }
        });
        JFrame frame = new JFrame("Dynamic Columns");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 250);
        frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
        frame.getContentPane().add(button, BorderLayout.SOUTH);
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new DynamicColumns();
            }
        });
    }
}
2
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 2
24.05.2014, 17:20
А можете написать пример только с добавлением строк и их заполнением при нажатии кнопки?, буду премного благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2014, 17:20
Помогаю со студенческими работами здесь

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

Динамическое добавление колонок в 1С8
Появилась проблема: необходимо создать документ, в табличных частях которого колонки не постоянны и могут изменятся, причём пользователь...

JAVA Swing JTable
В общем у меня заполняется JTable, с помощью вектора, и массива, при нажатии на checkbox обновляется база данных на определенной количество...

Swing.jTable считывание в массив
Работаю со Swing, по сути простая программка для подсчета по формуле, самый сложный компонент на форе -JTable с ним собственно и проблема....

Отображение JTAble на форме SWING
Здравствуйте. Делаю приложение Swing. Необходимо было сделать в таблице JTable колонку с кнопками. Нашел такой код class CellRender...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru