Вопрос

Я хотел бы создать визуализацию базы данных. Это приложение с полной дисктоп, и оно похоже на 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 это реальная проблема, у меня были проблемы с производительностью JXTableS (примечание: версия SwingX JTable) в сочетании с большими TableModelS, где таблица будет повторяться над всеми элементами, чтобы определить размер колонны, прежде чем покрасить его.

Это было решено путем установки значения прототипа для каждого столбца (используя TableColumnExt#setPrototypeValue) Я не уверен, регулярно ли JTable Содержит и эту логику, но, возможно, стоит попробовать заменить вашу JTable по JXTable и установить прототип.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top