JTable – отображаем данные в виде таблицы

Очень часто возникает необходимость в приложениях показать данные в виде таблицы с определенным количеством строк и столбцов. В Java Swing для отображения табличных данных используется комопнент JTable. JTable внутри себя не содержит данные, а служит только для их отображения.

Рассмотрим простой пример создания и использования таблицы. Для этого мы создадим таблицу, заполним её тестовыми данными и разместим на панели прокрутки. Размещение таблицы на панели прокрутки – это обычная практика, потому что это удобно и красиво.

Существует несколько способов того, как сказать JTable, какие данные и столбцы следует отображать. Здесь мы рассмотрим самый простой способ. Для начала определим, какие стобцы мы хотим показывать в таблице. Для примера я взял столбцы проводника Windows – Name (Имя файла или папки), Last modified (Дата последней модификации), Type (Тип) и Size (Размер). Собираем столбцы в массив строк вот так:

String[] columnNames = {
     "Name",
     "Last modified",
     "Type",
     "Size"
}; 

Далее необходимо определить данные, которые мы хотим отображать в таблице. Длеается это тоже при помощи массива строк вот так:

String[][] data = {
     {"addins", "02.11.2006 19:15", "Folder", ""},
     {"AppPatch", "03.10.2006 14:10", "Folder", ""},
     {"assembly", "02.11.2006 14:20", "Folder", ""},
     {"Boot", "13.10.2007 10:46", "Folder", ""},
     {"Branding", "13.10.2007 12:10", "Folder", ""},
     {"Cursors", "23.09.2006 16:34", "Folder", ""},
     {"Debug", "07.12.2006 17:45", "Folder", ""},
     {"Fonts", "03.10.2006 14:08", "Folder", ""},
     {"Help", "08.11.2006 18:23", "Folder", ""},
     {"explorer.exe", "18.10.2006 14:13", "File", "2,93MB"},
     {"helppane.exe", "22.08.2006 11:39", "File", "4,58MB"},
     {"twunk.exe", "19.08.2007 10:37", "File", "1,08MB"},
     {"nsreg.exe", "07.08.2007 11:14", "File", "2,10MB"},
     {"avisp.exe", "17.12.2007 16:58", "File", "12,67MB"},
}; 

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

JTable table = new JTable(data, columnNames);

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

jtable_sample

Исходный код приложения представлен ниже.

import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class TestFrame extends JFrame {

     public static void createGUI() {
          JFrame frame = new JFrame("Test frame");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

          String[] columnNames = {
                    "Name",
                    "Last modified",
                    "Type",
                    "Size"
          };
          
          String[][] data = {
                    {"addins", "02.11.2006 19:15", "Folder", ""},
                    {"AppPatch", "03.10.2006 14:10", "Folder", ""},
                    {"assembly", "02.11.2006 14:20", "Folder", ""},
                    {"Boot", "13.10.2007 10:46", "Folder", ""},
                    {"Branding", "13.10.2007 12:10", "Folder", ""},
                    {"Cursors", "23.09.2006 16:34", "Folder", ""},
                    {"Debug", "07.12.2006 17:45", "Folder", ""},
                    {"Fonts", "03.10.2006 14:08", "Folder", ""},
                    {"Help", "08.11.2006 18:23", "Folder", ""},
                    {"explorer.exe", "18.10.2006 14:13", "File", "2,93MB"},
                    {"helppane.exe", "22.08.2006 11:39", "File", "4,58MB"},
                    {"twunk.exe", "19.08.2007 10:37", "File", "1,08MB"},
                    {"nsreg.exe", "07.08.2007 11:14", "File", "2,10MB"},
                    {"avisp.exe", "17.12.2007 16:58", "File", "12,67MB"},
          };
          
          JTable table = new JTable(data, columnNames);
          
          JScrollPane scrollPane = new JScrollPane(table);
          
          frame.getContentPane().add(scrollPane);
          frame.setPreferredSize(new Dimension(450, 200));
          frame.pack();
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);
     }

     public static void main(String[] args) {
          javax.swing.SwingUtilities.invokeLater(new Runnable() {
               public void run() {
                    JFrame.setDefaultLookAndFeelDecorated(true);
                    createGUI();
               }
          });
     }
}

7 Responses to JTable – отображаем данные в виде таблицы

  1. KonstantinK:

    Добрый день, мне кажется, что в коде ошибка. Область прокрутки дважды добавляется на основной фрейм. Строки 41,43.

    Блог очень интересен, читаю с удовольствием.
    Пожалуйста, продолжайте писать!

    • bondforever:

      Да точно, так и есть — панель прокрутки дважды добавляется на основной фрейм. Сейчас поправлю. Спасибо, что читаешь блог, буду продолжать 🙂

  2. Прохор:

    А не подскажете, как сделать чтобы в каждом столбце данные выровнялись по центру?

  3. Гость:

    Привет всем! Кто подскажет, как прочест данные данные из одной таблицы и записать ее в другую?

    • Babichev:

      Как я понял таблица только отображает данные, а хранятся они только в массивах или коллекциях, так что и читать надо из них получется, но я хз могу и ошибаться:)

  4. SanyaBane:

    Уже какой пример создания JTable читаю — постоянно все создают новый JFrame. А что если JFrame уже создан? Как новую JTable положить в уже сущестующий (вручную созданный) фрейм?

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: