Question

Je voudrais créer une visualisation de la base de données. Il est une application de bureau complet, et il ressemble à Excel. Quand je l'ai mis dans ma visualisation de la base de données JTable 100 lignes, chacune avec 6 colonnes, l'application est écrasait vers le bas. Y at-il une meilleure classe pour une telle tâche? Ou une autre façon plus intelligente?

Cest la façon dont je le fais:

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"};
}
Était-ce utile?

La solution

Un problème dans le code ci-dessus est que vos données Objet 2-d [10] [] tableau, komorki, ne correspond pas à votre colonne String [] tableau, nazwyKolumn. Vous avez 7 colonnes et ont besoin 7 comme le premier index de tableau pour votre tableau d'objets. Pensez à changer ceci:

private Object[][] komorki = new Object[10][];
private String[] nazwyKolumn = { "Nazwisko", "Imię", "Pesel", "Płeć",
     "Data urodzenia", "Adres", "Kontakt" };

à ceci:

// !! 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" };

pour commencer.

Autres conseils

Comme mentionné par d'autres: Avez-vous essayé de profilage? Personnellement, j'ai de bonnes expériences avec JProfiler.

Bien que nous ne savons pas encore si le JTable est le problème réel, j'ai eu des problèmes de performance avec JXTables (Note: la version SwingX de JTable) en combinaison avec de grandes TableModels où la table serait itérer sur tous les éléments pour déterminer la taille de la colonne avant de le peindre.

Ceci a été résolu en définissant une valeur de prototype pour chaque colonne (en utilisant TableColumnExt#setPrototypeValue). Je ne sais pas si un JTable régulier contient cette logique aussi bien, mais il pourrait être la peine d'essayer de remplacer votre JTable par un JXTable et définir le prototype.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top