1

我想创建数据库的可视化。它是一个全桌面应用程序,看起来类似于 Excel。当我在我的 JTable 数据库可视化中放入 100 行,每行有 6 列时,应用程序正在崩溃。这样的任务有更好的课程吗?还是其他更聪明的方法?

我就是这样做的:

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"};
}
4

2 回答 2

3

上面代码中的一个问题是您的数据 2-d Object[10][] 数组 komorki 与您的列 String[] 数组 nazwyKolumn 不匹配。您有 7 列,需要 7 作为 Object 数组的第一个数组索引。考虑改变这个:

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

对此:

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

对于初学者。

于 2011-12-04T21:01:56.323 回答
2

正如其他人所提到的:您是否尝试过分析?我个人对 JProfiler 有很好的体验。

虽然我们还不知道 s 是否JTable是实际问题,但我在JXTables (注意:SwingX 版本JTable)和大TableModels 的组合中遇到了性能问题,其中表将遍历所有元素以确定列大小,然后再绘制它。

这是通过为每列设置一个原型值(使用TableColumnExt#setPrototypeValue)来解决的。我不确定常规是否JTable也包含此逻辑,但可能值得尝试将您JTable的替换为 aJXTable并设置原型。

于 2011-12-04T20:33:40.077 回答