Text Print by swing
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.MediaPrintableArea;
import javax.print.attribute.standard.MediaSize;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.OrientationRequested;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
public class LstGinkou extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private TextArea textArea;
private ResultSet rs;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LstGinkou frame = new LstGinkou();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public LstGinkou() {
setTitle(“ListGinkou”);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 450, 405);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
Label label = new Label(“銀行マスター一覧表”);
label.setBackground(new Color(255, 182, 193));
label.setAlignment(Label.CENTER);
label.setBounds(10, 10, 152, 23);
contentPane.add(label);
Label label_1 = new Label(“コード”);
label_1.setBackground(new Color(72, 209, 204));
label_1.setAlignment(Label.CENTER);
label_1.setBounds(10, 59, 69, 19);
contentPane.add(label_1);
textField = new JTextField();
textField.setBounds(89, 59, 73, 19);
textField.setDocument( new TextTypeLimit(TextType.NUMERIC,4));
textField.setHorizontalAlignment(SwingConstants.RIGHT);
textField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField_1.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField);
Label label_2 = new Label(“~”);
label_2.setAlignment(Label.CENTER);
label_2.setBounds(168, 59, 21, 23);
contentPane.add(label_2);
textField_1 = new JTextField();
textField_1.setBounds(195, 59, 73, 19);
textField_1.setDocument( new TextTypeLimit(TextType.NUMERIC,4));
textField_1.setHorizontalAlignment(SwingConstants.RIGHT);
textField_1.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField_1);
final TextArea textArea = new TextArea();
textArea.setBounds(10, 220, 403, 131);
contentPane.add(textArea);
JButton button = new JButton(“印 刷”);
button.setBounds(89, 184, 91, 21);
button.addActionListener(new ActionListener() {
@SuppressWarnings(“static-access”)
public void actionPerformed(ActionEvent e) {
int sttcode;
int endcode;
try {
sttcode =Integer.parseInt(textField.getText());
endcode =Integer.parseInt(textField_1.getText());
} catch (Exception e2) {
JOptionPane.showMessageDialog(button,”範囲指定が間違っています。”,
“インフォメーション”, JOptionPane.INFORMATION_MESSAGE);
textField.requestFocus();
return;
}
if (sttcode > endcode) {
JOptionPane.showMessageDialog(button,”範囲指定が間違っています。”,
“インフォメーション”, JOptionPane.INFORMATION_MESSAGE);
textField.requestFocus();
return;
}
Connect Con = new Connect();
Con.open();
String Str = “SELECT * FROM 銀行マスター “;
Str += ” where 銀行コード >= ” + sttcode;
Str += ” and 銀行コード <= ” + endcode;
Str += “order by 銀行コード”;
//System.out.println(Str);
// 改行文字の取得
final String line_separator = System.getProperty(“line.separator”);
//レコード数
int num_line;
//1ページの行数
int gyosuu=36; //縦:52 横:36
//フォントサイズ
int font_size=12;
try {
//データ取得
rs = Con.stmt.executeQuery(Str);
textArea.setText(“”);
String Spw18 =” ”;
//見出し
textArea.append(Spw18 + “* 銀行マスター一覧表 *” + ” page.1″+ line_separator);
textArea.append(“” + line_separator);
textArea.append(” コード” + “ ” + “銀行名” + Spw18 + “カナ名” + line_separator);
num_line=3;
while (rs.next()) {
// テキストエリアへセット
num_line = num_line + 1;
String F01 = null;
F01 = F01.format(“%04d”,rs.getInt(“銀行コード”));
String F02= rs.getString(“銀行名”);
SetSpaceW SpW1 = new SetSpaceW();
SpW1.St(F02, 20);
F02=SpW1.Atai;
String F03=rs.getString(“カナ銀行名”);
textArea.append(“ ” + F01 + “ ” + F02 + “ ” + F03 + line_separator);
int amari= num_line % gyosuu ;
int page=num_line / gyosuu + 1;
if ( amari==0 && num_line>=gyosuu ) {
//見出し
textArea.append(Spw18 + “* 銀行マスター一覧表 *” + ” page.” + page + line_separator);
textArea.append(“” + line_separator);
textArea.append(” コード” + “ ” + “銀行名” + Spw18 + “カナ名” + line_separator);
num_line=num_line + 3;
}
}
rs.close();
//空行を追加
int amari=num_line % gyosuu;
for (int i=0 ; i<gyosuu-amari ;i++) {
num_line = num_line + 1;
textArea.append(“” + line_separator);
}
}catch(SQLException ex) {
System.out.println(“選択に失敗しました。”);
if(rs!=null)
try{rs.close();}catch(Exception e2){ex.printStackTrace();}
ex.printStackTrace();
return;
}
Con.close();
// プリンタージョブの構築
//final double CM = 72.0 / 2.54;
System.out.println(num_line + “;” + gyosuu);
PrinterJob printer = PrinterJob.getPrinterJob();
//PageFormat format = printer.defaultPage();
PrintRequestAttributeSet reqset = new HashPrintRequestAttributeSet();
MediaSizeName medname = MediaSizeName.ISO_A4;
reqset.add(medname);
MediaSize medsize = MediaSize.getMediaSizeForName(medname);
float medwidth = medsize.getX(MediaPrintableArea.MM);
float medheight = medsize.getY(MediaPrintableArea.MM);
float topmm =0.6f;//8.8
float bottom = 7.7f;
float leftmm = 0.6f;//6.6
float rightmm = 5.5f;
reqset.add(new MediaPrintableArea(
leftmm,topmm,
(medwidth – leftmm – rightmm),
(medheight – topmm – bottom),MediaPrintableArea.MM));
reqset.add(OrientationRequested.LANDSCAPE); //横行数36 縦行数52
//TextPrinterの宣言
printer.setPrintable(new TextPrinter(textArea.getText(),num_line,gyosuu,font_size));
if (printer.printDialog(reqset)) {
try {
printer.print(reqset);
} catch (PrinterException pe) {
pe.printStackTrace();
System.err.println(pe);
}
}
}
});
contentPane.add(button);
JButton button_1 = new JButton(“終 了”);
button_1.setBounds(195, 184, 91, 21);
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//System.out.println(“ENDキーが押された”);
//System.exit(0);
dispose();
}
});
contentPane.add(button_1);
}
}