2

質問データベースからデータが取得され、scrollPane に埋め込まれた JTable オブジェクト「テーブル」に表示されたら、表示されたテーブルをそのまま A3 サイズの用紙に印刷できる印刷ジョブを作成するにはどうすればよいですか?

データベースからデータを取得するための私のコードを以下に示します。

try 
{
    Class.forName("com.mysql.jdbc.Driver"); 
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost/newb","root","pass");
    Statement stat=con.createStatement();   
    ResultSet res=stat.executeQuery("select * from table where name = '"+name+"'");
    ResultSetMetaData rsmd = res.getMetaData();
    int colcount = rsmd.getColumnCount();
    Vector columns = new Vector(colcount);
        for(int i=3; i<=colcount; i++)
    {
        columns.add(rsmd.getColumnName(i));
    }
    Vector data = new Vector();
    Vector row;

    // Store row data
    while(res.next())
    {
        row = new Vector(colcount);
        for(int i=3; i<=colcount; i++)
        {
            row.add(res.getString(i));
        }
        data.add(row);
    }
    table = new JTable(data, columns);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    scrollPane.setViewportView(table);
}
catch(Exception ex)
{       
    System.out.println(ex);
}

テーブルからデータを取得するためにベクター クラスを使用しています。表示された表に示されているデータをどのように紙に出力しますか?

4

3 に答える 3

2

あなたは明らかに、前の質問で提供されたリンクを読んでいません。

テーブルの使い方の印刷セクションから

印刷

JTable は、テーブルを印刷するための単純な API を提供します。テーブルを出力する最も簡単な方法は、引数なしで JTable.print を呼び出すことです。

try {
     if (! table.print()) {
         System.err.println("User cancelled printing");
     } 
 } catch (java.awt.print.PrinterException e) {
     System.err.format("Cannot print %s%n", e.getMessage()); 
 } 

通常の Swing アプリケーションで print を呼び出すと、標準の印刷ダイアログ ボックスが表示されます。(ヘッドレス アプリケーションでは、テーブルは単に印刷されます。) 戻り値は、ユーザーが印刷ジョブを続行したかキャンセルしたかを示します。JTable.print は、チェック例外である java.awt.print.PrinterException をスローできます。そのため、上記の例では try ... catch を使用しています。

JTable は、さまざまなオプションを備えたいくつかの print のオーバーロードを提供します。次の TablePrintDemo.java のコードは、ページ ヘッダーを定義する方法を示しています。

MessageFormat header = new MessageFormat("Page {0,number,integer}");

try {
    table.print(JTable.PrintMode.FIT_WIDTH, header, null); 
} catch (java.awt.print.PrinterException e) {
     System.err.format("Cannot print %s%n", e.getMessage()); 
}

より高度な印刷アプリケーションの場合は、 JTable.getPrintable を使用してテーブルの Printable オブジェクトを取得します。Printable の詳細については、2D グラフィックス トレイルの印刷レッスンを参照してください。

于 2013-01-27T06:02:28.137 に答える
2

JTable.print()メソッドを使用するだけです。これは、 JTableをプリンターに送信することに関する記事と、より多くのパラメーターを含む別の記事です

于 2013-01-27T03:20:32.177 に答える
0

Java netbeans で JTable を印刷する方法について試してみてください。

    private void btn_printActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
         MessageFormat header = new MessageFormat("Print Report");
        MessageFormat footer = new MessageFormat("Page{0,number,integer}");
    try {
        table_employee.print(JTable.PrintMode.FIT_WIDTH, header, footer);
    } catch (java.awt.print.PrinterAbortException e) {
    } catch (PrinterException ex) {
        Logger.getLogger(employee_info.class.getName()).log(Level.SEVERE, null, ex);
    }
}                                         
于 2014-06-10T16:56:49.363 に答える