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

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

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

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

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 записывались в...

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

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

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

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

Чисто визуально эту колонку видно, но если добавить содержимое... например
table.addRow(mass);
Где mass массив данных то ты получишь NPE как будто бы ее(колонки) и не существует....
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12835 / 7571 / 1765
Регистрация: 25.07.2009
Сообщений: 13,968
15.02.2014, 14:13 4
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();
            }
        });
    }
}
Динамическое добавление колонок в JTable Swing
2
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 2
24.05.2014, 17:20 5
А можете написать пример только с добавлением строк и их заполнением при нажатии кнопки?, буду премного благодарен
0
24.05.2014, 17:20
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 на форме SWING
Здравствуйте. Делаю приложение Swing. Необходимо было сделать в таблице JTable колонку с кнопками....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
Как работать с массивами в JavaScript
bytestream 21.01.2025
Массивы в JavaScript представляют собой один из фундаментальных типов данных, который позволяет хранить упорядоченные коллекции различных элементов в одной переменной. Эта структура данных является. . .
Какая максимальная длина адреса (URL) в различных браузерах и стандартах
bytestream 21.01.2025
В современном мире интернет-технологий URL-адреса (Uniform Resource Locator) играют фундаментальную роль в функционировании веб-пространства. Эти уникальные идентификаторы ресурсов стали неотъемлемой. . .
Как сбросить локальный репозиторий до состояния удалённого репозитория Git
bytestream 21.01.2025
При разработке программного обеспечения с использованием системы контроля версий Git разработчики часто сталкиваются с необходимостью синхронизации локального и удаленного репозиториев. Данная задача. . .
Как запретить подсветку выделенного текста с помощью CSS
bytestream 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения. Выделение текста может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru