Objeto con mejor eficiencia que JTable
-
28-10-2019 - |
Pregunta
Me gustaría crear la visualización de la base de datos. Es una aplicación completa de prueba y se ve similar a Excel. Cuando puse en mi visualización de la base de datos JTable 100 filas, cada una con 6 columnas, la aplicación se está aplastando. ¿Hay una clase mejor para tal tarea? ¿O algún otro camino más inteligente?
Esa es la forma en que lo hago:
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"};
}
Solución
Un problema en el código anterior es que su objeto 2-D de datos [10] [] matriz, komorki, no coincide con su cadena de columna [] matriz, nazwykolumn. Tiene 7 columnas y necesita 7 como el primer índice de matriz para su matriz de objetos. Considere cambiar esto:
private Object[][] komorki = new Object[10][];
private String[] nazwyKolumn = { "Nazwisko", "Imię", "Pesel", "Płeć",
"Data urodzenia", "Adres", "Kontakt" };
a esto:
// !! 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" };
para principiantes.
Otros consejos
Como se mencionó por otros: ¿Has intentado perfilar? Personalmente tengo buenas experiencias con JProfiler.
Aunque aún no sabemos si el JTable
es el problema real, tuve problemas de rendimiento con JXTable
S (nota: la versión swingx de JTable
) en combinación con grande TableModel
s donde la tabla iteraría sobre todos los elementos para determinar el tamaño de la columna antes de pintarla.
Esto se resolvió estableciendo un valor prototipo para cada columna (usando TableColumnExt#setPrototypeValue
). No estoy seguro de si un regular JTable
Contiene esta lógica también, pero podría valer la pena intentar reemplazar su JTable
por un JXTable
y establezca el prototipo.