Oggetto con una migliore efficienza di Jtable
-
28-10-2019 - |
Domanda
Vorrei creare visualizzazione del database. È un'applicazione a pieno titolo e sembra simile a Excel. Quando metto nella mia visualizzazione del database Jtable 100 righe, ognuna con 6 colonne, l'applicazione si sta schiacciando. C'è una classe migliore per un tale compito? O qualche altro modo più intelligente?
Questo è il modo in cui lo faccio:
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"};
}
Soluzione
Un problema nel codice sopra è che l'array dell'oggetto 2-D dei dati [10] [], Komorki, non corrisponde al tuo array di stringa di colonna [], Nazwykolumn. Hai 7 colonne e hai bisogno di 7 come primo indice di array per il tuo array di oggetti. Considera di cambiare questo:
private Object[][] komorki = new Object[10][];
private String[] nazwyKolumn = { "Nazwisko", "Imię", "Pesel", "Płeć",
"Data urodzenia", "Adres", "Kontakt" };
a questo:
// !! 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" };
per i principianti.
Altri suggerimenti
Come menzionato da altri: hai provato la profilazione? Personalmente ho buone esperienze con JProfiler.
Anche se non sappiamo ancora se il JTable
è il problema reale, ho avuto problemi di prestazione con JXTable
S (Nota: la versione swingx di JTable
) in combinazione con grande TableModel
s dove il tavolo iterirebbe su tutti gli elementi per determinare la dimensione della colonna prima di dipingerla.
Questo è stato risolto impostando un valore prototipo per ciascuna colonna (usando TableColumnExt#setPrototypeValue
). Non sono sicuro che un normale JTable
Contiene anche questa logica, ma potrebbe valere la pena provare a sostituire il tuo JTable
da a JXTable
e imposta il prototipo.