2016-11-02 10 views
0

私は宿題のためのレストラン注文システムメニューをJavaで作っています。私は、テーブルの内容を含むテキストファイルを作成するプログラムの形式で領収書を作成します。私はしかし、これを行うのに苦労している。私のすべてのテーブルの内容は文字列です。JTableの内容をテキストファイルとして保存する

これは、テーブルの内容をエクスポートするためのコードです:

try{  
    BufferedWriter bfw = new BufferedWriter(new FileWriter("Data.txt")); 
    for(int i = 0 ; i < tableSalesFood.getColumnCount() ; i++){ 
     bfw.write(tableSalesFood.getColumnName(i)); 
     bfw.write("\t"); 
    } 

    for (int i = 0 ; i < tableSalesFood.getRowCount(); i++){ 
     bfw.newLine(); 
     for(int j = 0 ; j < tableSalesFood.getColumnCount();j++){ 
      bfw.write((String)(tableSalesFood.getValueAt(i,j))); 
      bfw.write("\t");; 
     } 
    } 

    bfw.close(); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 

私はボタンをクリックすると、プログラムが例外エラーを返します。

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 
+4

'tableSalesFood.getValueAt(i、j)の.toString()' getValueAtリターンをオブジェクトであり、文字列ではありません。 ObjectはString、Integer、Double、RubberDuckyのいずれかです。 StringにキャストしないでtoStringメソッドを呼び出します。 – Compass

+0

テキストとのシリアル化/逆シリアル化の場合、JTable自体ではなく、基本となる 'TableModel'のto/fromテキストを使用する方がよいでしょう。 – ControlAltDel

答えて

3

どうやらそれは(String)(tableSalesFood.getValueAt(i,j)によって引き起こされています、あなたの」 IntegerをStringにキャストしようとしています。 ClassCastExceptionが何であるかをご確認ください。例えばquestionをご覧ください。

あなたは、変換によってエラーを修正キャストすることはできません。

Objects.toString(tableSalesFood.getValueAt(i,j), ""); 

クラスObjectsjava.utilパッケージで定義されています。

+0

私はこれをしましたが、それでも私にエラーが表示されます:java.lang.NullPointerException –

+0

あなたは 'Objects.toString'を使用していますか? NullPointerExceptionが参照する行はどれですか? – borowis

+0

はい、これは私が使用したものです:Objects.toString(tableSalesFood.getValueAt(i、j)、 ""); –

1

あなたが実際に文字列としてのJTableのヘッダと値をエクスポートするのJTableのデフォルトのTransferHandlerを使って、タブ区切り値を作成することができます。

Toolkit toolkit = Toolkit.getDefaultToolkit(); 
Clipboard clipboard = toolkit.getSystemClipboard(); 
table.getTransferHandler().exportToClipboard(table, clipboard, 
    TransferHandler.COPY); 

try { 
    String text = (String) clipboard.getData(DataFlavor.stringFlavor); 
    Files.write(Paths.get("Data.txt"), Collections.singleton(text), 
     Charset.defaultCharset()); 
} catch (UnsupportedFlavorException | IOException e) { 
    throw new RuntimeException(e); 
} 
+0

これを試しましたが、Data.txtファイルにはテーブルの内容が含まれていません。ツールキットツールキット= Toolkit.getDefaultToolkit(); クリップボードクリップボード= toolkit.getSystemClipboard(); table.getTransferHandler()。exportToClipboard(テーブル、クリップボード、 TransferHandler.COPY); try { String text =(String)clipboard.getData(DataFlavor.stringFlavor); Files.write(Paths.get( "Data.txt")、Collections.singleton(text)、 文字セット。defaultCharset()); } catch(UnsupportedFlavorException | IOException e){ 新しいRuntimeException(e)をスローします。 } –

関連する問題