3
if(e.getActionCommand().equals("save to file"))
    {
        System.out.println("save is pressed");
        StringBuffer fileContent = new StringBuffer();
        TableModel tModel = m_table.getModel();
        for (int i = 1; i < tModel.getRowCount(); i++) 
        {
         for(int j=0;j<tModel.getColumnCount();j++)
         {
            Object cellValue = tModel.getValueAt(i, j);
            // ... continue to read each cell in a row
            fileContent.append(cellValue);
            // ... continue to append each cell value
            fileContent.append(" ");
         }
         fileContent.append("\n");
        }
        FileWriter fileWriter;
        try {
            fileWriter = new FileWriter(new File("data.txt"));
            fileWriter.write(fileContent.toString());
            fileWriter.flush();
            fileWriter.close();
            }
        catch (IOException e1) 
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

JDialogテーブルがあるを作成しました。ボタンをクリックするだけでテーブルデータをファイルに保存できますが、そのデータをテーブルに保持して、次にプログラムを実行したときにそのデータが利用可能になり、テーブルに表示されるようにします。確認ボタンが押されたとき。Javaの永続性とJavaのシリアル化の概念について読んだのですが、どの手法が適切で、この問題にどのように使用するかが明確にわかりません。

4

3 に答える 3

3

ここに例示されている、またはここに引用されているTableModelを使用してデータのみを保存することを検討してください。java.util.Preferencesjavax.jnlp.PersistenceService

于 2012-11-09T13:40:15.143 に答える
1

アプリケーションによって異なります。最も簡単で迅速な方法は、オブジェクトのシリアル化です。オブジェクトをファイルに保存して、再度ロードすることができます。これは、テーブルデータを保持するオブジェクトを使用して行います。そのために利用できるチュートリアルはたくさんあります。

オブジェクトを最初に人間が読める形式(XMLやJSONなど)に変換してからファイルとして保存することで、シリアル化の概念を拡張できます。これには、エクスポートされたデータをJavaプログラム以外で使用できるという利点があります。XMLにマーシャリングするためのフレームワークはJAXBです。また、それに関するチュートリアルもたくさんあります。

最後に、SQLデータベースを使用できます。データベースが最もパフォーマンスの高い代替手段になります。SQLinsHibernateで永続化するための優れたフレームワーク。これは主に、高速データストレージバックエンドを必要とする大規模なビジネスアプリケーションに使用されます。そのためには、SQLサーバーを実行する必要があります。繰り返しになりますが、多くのチュートリアルが利用可能です。

あなたの場合、最初の選択肢が最良であると思います。それは迅速で簡単だからです。SQLは少しやり過ぎでしょう;-)

于 2012-11-09T11:17:27.047 に答える
1

データベース(ローカルまたはサーバー上)にアクセスできない場合は、おそらくシリアル化を使用するのが最善の方法です。

を設定するために具象クラスを使用することを検討してくださいJTable。したがって、データを保存するには、このクラスを作成して実装しSerializable、を使用してファイルに書き込む必要がありますObjectOutputStream。次に、後で取得するには、を使用しObjectInputStreamます。

データがどのように機能するかはよく覚えていませんJTableが、おそらく、から継承するカスタムModelクラスを作成する必要がAbstractTableModelあり、配列またはにデータが含まれますList。しかしList、それははるかに柔軟で使いやすいので、を使用することをお勧めします。したがって、リストを直接シリアル化し、次にプログラムを実行するときに取得できます。

于 2012-11-09T11:18:37.887 に答える