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

上記のコードの問題の 1 つは、データの 2 次元 Object[10][] 配列 komorki が列 String[] 配列 nazwyKolumn と一致しないことです。7 つの列があり、Object 配列の最初の配列インデックスとして 7 が必要です。これを変更することを検討してください:

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で良い経験をしています。

JTableが実際の問題であるかどうかはまだわかりませんが、 JXTables(注:SwingXバージョンのJTable)と大きなTableModelsを組み合わせると、テーブルがすべての要素を反復処理して列サイズを決定してからペイントするというパフォーマンスの問題が発生しました。

これは、(を使用して)各列にプロトタイプ値を設定することで解決されましたTableColumnExt#setPrototypeValue。レギュラーにこのロジックが含まれているかどうかはわかりませんが、をaJTableに置き換えて、プロトタイプを設定することをお勧めします。JTableJXTable

于 2011-12-04T20:33:40.077 に答える