Объект с большей эффективностью, чем JTable - PullRequest
1 голос
/ 05 декабря 2011

Я хотел бы создать визуализацию базы данных. Это полноэкранное приложение, и оно похоже на Excel. Когда я помещаю в свою визуализацию базы данных JTable 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"};
}

Ответы [ 2 ]

3 голосов
/ 05 декабря 2011

Одной из проблем в приведенном выше коде является то, что ваш массив данных 2-d Object [10] [], komorki, не соответствует массиву String [] вашего столбца, nazwyKolumn.У вас есть 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" };

для начинающих.

2 голосов
/ 05 декабря 2011

Как уже упоминали другие: вы пробовали профилирование?Лично у меня хороший опыт работы с JProfiler.

Хотя мы еще не знаем, является ли проблема JTable реальной, у меня были проблемы с производительностью JXTable s (примечание: версия SwingX JTable)в сочетании с большими TableModel s, где таблица будет перебирать все элементы для определения размера столбца перед его рисованием.

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

...