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"};
}
¿Fue útil?

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 JXTableS (nota: la versión swingx de JTable) en combinación con grande TableModels 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top