Объект с лучшей эффективностью, чем JTable
-
28-10-2019 - |
Вопрос
Я хотел бы создать визуализацию базы данных. Это приложение с полной дисктоп, и оно похоже на Excel. Когда я помещаю в свою базу данных JTable Visualization 100 строк, каждый с 6 столбцами, приложение раздавит. Есть ли лучший класс для такой задачи? Или какой -то другой умный способ?
Вот как я это делаю:
import PodklasyInterfejsu.Menu;
import javax.swing.*;
import java.awt.*;
public class OknoGlowne extends JFrame
{
public Okno()
{
// ustawienie rozmiaru okna na 100%
JFrame Okno = new JFrame();
Okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Okno.setTitle("Archiwum Stomatologiczne");
Toolkit zestaw = Toolkit.getDefaultToolkit();
Dimension rozmiarEkranu = zestaw.getScreenSize();
int wysEkranu = rozmiarEkranu.height;
int szerEkranu = rozmiarEkranu.width;
Okno.setSize(szerEkranu, wysEkranu - 60);
Container powZawartosci = getContentPane();
// Panel Górnego Menu:
Menu GorneMenu = new Menu();
Okno.setJMenuBar(GorneMenu);
// Wizualizacja bazy w tabeli:
JTable tabela = new JTable(komorki, nazwyKolumn);
tabela.setAutoCreateRowSorter(true);
Okno.add(new JScrollPane(tabela), BorderLayout.CENTER);
Okno.setVisible(true);
}
private Object[][] komorki = new Object [10][];
private String[] nazwyKolumn = {"Nazwisko", "Imię", "Pesel", "Płeć", "Data urodzenia", "Adres", "Kontakt"};
}
Решение
Одна проблема в приведенном выше коде заключается в том, что ваш объект Data 2-D [10] [] Array, Komorki, не соответствует вашей строке столбца [] массив, Назвиколмн. У вас есть 7 столбцов, и вам нужно 7 в качестве первого индекса массива для вашего массива объектов. Подумайте о том, чтобы изменить это:
private Object[][] komorki = new Object[10][];
private String[] nazwyKolumn = { "Nazwisko", "Imię", "Pesel", "Płeć",
"Data urodzenia", "Adres", "Kontakt" };
к этому:
// !! private Object[][] komorki = new Object[10][];
private Object[][] komorki = new Object[10][7]; //!!
private String[] nazwyKolumn = { "Nazwisko", "Imię", "Pesel", "Płeć",
"Data urodzenia", "Adres", "Kontakt" };
для начинающих.
Другие советы
Как упоминалось другие: вы пробовали профилировать? Лично у меня есть хороший опыт с JProfiler.
Хотя мы еще не знаем, есть ли JTable
это реальная проблема, у меня были проблемы с производительностью JXTable
S (примечание: версия SwingX JTable
) в сочетании с большими TableModel
S, где таблица будет повторяться над всеми элементами, чтобы определить размер колонны, прежде чем покрасить его.
Это было решено путем установки значения прототипа для каждого столбца (используя TableColumnExt#setPrototypeValue
) Я не уверен, регулярно ли JTable
Содержит и эту логику, но, возможно, стоит попробовать заменить вашу JTable
по JXTable
и установить прототип.