Приведенный ниже код Java представляет собой простую программу, используемую для демонстрации различных методов DefaultTableModel
в действии.
Фон
Первый созданный JTable использует двумерный массив объектов для заполнения данных строки и String
массив для заполнения имен столбцов. Программа показывает, что хотя вы можете получить доступ к интерфейсу TableModel
модели таблицы для получения и установки значений для отдельных ячеек таблицы, созданных для этой JTable
, вы не можете перейдите к DefaultTableModel
для дальнейшего манипулирования данными.
Второй JTable
создается путем определения DefaultTableModel
с данными первыми. Это позволяет выполнять полный спектр действий табличной модели над JTable
(например, добавление строки, вставка строки, удаление строки, добавление столбца и т. Д.).
Возможно, вас также заинтересует класс AbstractTableModel
. Этот класс позволяет вам создавать пользовательскую модель таблицы для JTable, в которой вы можете хранить данные любым удобным для вас способом. Он не обязательно должен быть в Vector
из Vectors
.
Код Java

Примечание. См. раздел “Обзор DefaultTableModel” для получения дополнительной информации.
import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.TableModel; import javax.swing.table.DefaultTableModel; public class TableExample {public static void main (String [] args) {//Используйте поток отправки событий для компонентов SwingEventQueue.invokeLater (new Runnable () { @Overridepublic void run () {new TableExample (). BuildGUI ();}});} public void BuildGUI () {JFrame guiFrame = new JFrame ();//убедитесь, что программа завершается при закрытии кадра guiFrame.setDefaultCloseOperation (JFrame .EXIT_ON_CLOSE); guiFrame.setTitle («Создание примера таблицы»); guiFrame.setSize (700,860);//Это центрирует JFrame в середине экрана guiFrame.setLocationRelativeTo (null);//Создайте двумерный массив для хранить данные для JTable.Object [] [] data = {{1,1,1}, {2,2,2}, {3,3,3}, {4,4,4}};// Строковый массив, содержащий имена столбцов для JTable.String [] columnNames = {"Column 1", "Colu mn 2 "," Column 3 "};//Создаем JTable, используя массив данных и массив имен столбцов. JTable exampleJTable = new JTable (data, columnNames);//Создаем JScrollPane для содержания для JTableJScrollPane sp = new JScrollPane ( exampleJTable);//JTable предоставит методы, которые обращаются к DefaultTabelModel.//created при создании объекта JTable System.out.println (exampleJTable.getValueAt (2, 2));//DefaultTableModel может быть доступен через метод getModel. TableModel tabModel = exampleJTable.getModel ();//Обеспечивает тот же вывод, что и вызов метода exampleJTable.getValueAt//выше.System.out.println (tabModel.getValueAt (2, 2) .toString ());//Примечание: Мы не можем преобразовать TableMode, возвращаемый//методом getModel, в объект DefaultTableModel, потому что он реализован как анонимный//внутренний класс в JTable. Итак, давайте создадим JTable с DefaultTableModel,//мы можем использовать://Создаем объект DeafultTableModel для другого JTableDefaultTableModel defTableModel = new DefaultTableModel (data, columnNames); JTable anotherJTable = new JTable (defTableModel);//Создаем JTable для JScrollPane. the JTableJScrollPane anotherSP = new JScrollPane (anotherJTable);//массив, содержащий данные для нового columnObject [] newData = {1,2,3,4};//Добавить столбецdefTableModel.addColumn ("Column 4", newData); //массив, содержащий данные для нового rowObject [] newRowData = {5,5,5,5};//Добавить rowdefTableModel.addRow (newRowData);//массив, содержащий данные для нового rowObject [] insertRowData = { 2.5,2.5,2.5,2.5};//Вставить строку (sp, BorderLayout.NORTH); guiFrame.add (anotherSP, BorderLayout.SOUTH); guiFrame.setVisible (true);}}