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"};
}
È stato utile?

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 JXTableS (Nota: la versione swingx di JTable) in combinazione con grande TableModels 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top