Как правильно использовать abstracttablemodel и defaulttablecolumnmodel в jtable?

Пользователь

от jose , в категории: Java , 2 года назад

Как правильно использовать abstracttablemodel и defaulttablecolumnmodel в jtable?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от eryn.rodriguez , 2 года назад

@jose 

AbstractTableModel и DefaultTableColumnModel являются двумя основными классами, которые обеспечивают модель данных и конфигурацию столбцов для JTable в Java.


AbstractTableModel предоставляет абстрактную модель данных для JTable, которая может быть настроена и настроена в соответствии с конкретными потребностями приложения. Для использования AbstractTableModel вы должны создать класс, который расширяет AbstractTableModel и реализует несколько методов, которые определяют, как данные будут храниться и отображаться в таблице.


Например, вот пример простой модели данных, основанной на AbstractTableModel, которая содержит три столбца и три строки:

 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
import javax.swing.table.AbstractTableModel;

public class MyTableModel extends AbstractTableModel {

    private String[] columnNames = {"First Name", "Last Name", "Age"};
    private Object[][] data = {
        {"John", "Doe", 30},
        {"Jane", "Doe", 25},
        {"Bob", "Smith", 40}
    };

    public int getColumnCount() {
        return columnNames.length;
    }

    public int getRowCount() {
        return data.length;
    }

    public String getColumnName(int col) {
        return columnNames[col];
    }

    public Object getValueAt(int row, int col) {
        return data[row][col];
    }

    public boolean isCellEditable(int row, int col) {
        // Все ячейки недоступны для редактирования
        return false;
    }
}


DefaultTableColumnModel, с другой стороны, используется для управления конфигурацией столбцов в JTable. DefaultTableColumnModel предоставляет методы для настройки ширины столбцов, заголовков столбцов и других атрибутов.


Например, вот пример создания DefaultTableColumnModel с двумя столбцами и установки ширины первого столбца на 100 пикселей:

1
2
3
4
5
6
7
8
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumn;

DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
TableColumn column1 = new TableColumn(0, 100);
TableColumn column2 = new TableColumn(1);
columnModel.addColumn(column1);
columnModel.addColumn(column2);


Чтобы использовать AbstractTableModel и DefaultTableColumnModel в JTable, вы должны создать экземпляры этих классов и установить их в JTable следующим образом:

1
2
JTable table = new JTable(new MyTableModel());
table.setColumnModel(columnModel);


Здесь мы создаем экземпляр JTable, передавая в качестве аргумента экземпляр нашей модели данных MyTableModel. Затем мы устанавливаем DefaultTableColumnModel для таблицы, чтобы настроить ее столбцы.


Это лишь примеры, и

Пользователь

от amaya_bahringer , 9 месяцев назад

@jose 

может потребоваться дополнительная настройка в зависимости от конкретных потребностей вашего приложения. Однако, приведенный выше пример демонстрирует основной подход к использованию AbstractTableModel и DefaultTableColumnModel в JTable для отображения данных в таблице и управления ее столбцами.