关于java记事本 如何实现记事本的打印功能? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 网上找的 不知对不对啊 import java.awt.*; import java.io.*; import java.awt.print.*; import javax.swing.*; import javax.swing.text.*; class PrintableTextArea extends JTextArea implements Printable { String str; Font font; PrinterJob pj; PageFormat defaultFormat; int visiblePageWidth = 0, visiblePageHeight = 0; final static int PageX = 10, PageY = 10; PrintableTextArea(int rows, int columns) { super(rows, columns); } public void printIt(String str, Font font) { this.str = str; this.font = font; pj = PrinterJob.getPrinterJob(); defaultFormat = pj.defaultPage(); pj.setPrintable(this, defaultFormat); visiblePageWidth = (int)defaultFormat.getImageableWidth(); visiblePageHeight = (int)defaultFormat.getImageableHeight(); if(pj.printDialog()) { try { pj.print(); } catch(PrinterException e) { } } } public int print(Graphics g, PageFormat pf, int page) throws PrinterException { if(page >= 1) return Printable.NO_SUCH_PAGE; Graphics2D g2 = (Graphics2D) g; g2.translate((int)pf.getImageableX(), (int)pf.getImageableY()); g2.setFont(font); int fontHeight = 0, fontStringWidth = 0; int line = 0; String s = null; FontMetrics fm = getFontMetrics(font); fontHeight = fm.getHeight(); try{ DataOutputStream osw = new DataOutputStream(new FileOutputStream("$temp.$$p")); osw.writeBytes(str); osw.close(); } catch(IOException e) { } try { BufferedReader br = new BufferedReader(new FileReader("$temp.$$p")); s = br.readLine(); while(s != null) { if(s.length() == 0) g2.drawString(" ", PageX, PageY + fontHeight*(line++)); else { //g2.drawString(s, PageX, PageY + fontHeight*(line++)); fontStringWidth = fm.stringWidth(s); if(fontStringWidth > visiblePageWidth) { String s1, s2; int goBack = 0; while( fm.stringWidth(s1 = s.substring(0, s.length() - goBack)) > visiblePageWidth) { goBack++; } s1 = s.substring(0, s.length() - goBack); s2 = s.substring(s.length() - goBack - 1); g2.drawString(s1, PageX, PageY + fontHeight*(line++)); g2.drawString(s2, PageX, PageY + fontHeight*(line++)); } else { g2.drawString(s, PageX, PageY + fontHeight*(line++)); } } s = br.readLine(); } br.close(); } catch(IOException e) { } return Printable.PAGE_EXISTS; } JTextArea 从 JTextComponent 继承了 三个 print 方法 和一个 getPrintable(MessageFormat headerFormat, MessageFormat footerFormat) 。其中void print() 一个便捷打印方法,它显示打印对话框,然后在交互 模式下打印此 JTextComponent,不打印标题和脚注文本。 Printing Support in Swing Componentshttp://java.sun.com/docs/books/tutorial/2d/printing/swing.html Linux下执行java的问题 2个问题 哪位兄台使用的是netbeans5.5能帮忙看看吗,谢谢 显视不了绘制图 关于Swing中用按钮做超链接 新手請教文件流問題 问:如何打印出一个给定文件夹下所有文件名称? 请问把读文件出来的输出的东西是什么?怎么转换成Sting类型? java开发的socket与C开发的socket通信问题 java.net.MalformedURLException: no protocol: 1怎么解决 对设计模式-适配器的疑惑 有关日志的问题
import java.awt.*;
import java.io.*;
import java.awt.print.*;
import javax.swing.*;
import javax.swing.text.*;
class PrintableTextArea extends JTextArea implements Printable {
String str;
Font font;
PrinterJob pj;
PageFormat defaultFormat;
int visiblePageWidth = 0, visiblePageHeight = 0;
final static int PageX = 10, PageY = 10;
PrintableTextArea(int rows, int columns) {
super(rows, columns);
}
public void printIt(String str, Font font) {
this.str = str;
this.font = font;
pj = PrinterJob.getPrinterJob();
defaultFormat = pj.defaultPage();
pj.setPrintable(this, defaultFormat);
visiblePageWidth = (int)defaultFormat.getImageableWidth();
visiblePageHeight = (int)defaultFormat.getImageableHeight();
if(pj.printDialog()) {
try {
pj.print();
} catch(PrinterException e) {
}
}
}
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if(page >= 1)
return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D) g;
g2.translate((int)pf.getImageableX(), (int)pf.getImageableY());
g2.setFont(font);
int fontHeight = 0, fontStringWidth = 0;
int line = 0;
String s = null;
FontMetrics fm = getFontMetrics(font);
fontHeight = fm.getHeight();
try{
DataOutputStream osw = new DataOutputStream(new FileOutputStream("$temp.$$p"));
osw.writeBytes(str);
osw.close();
} catch(IOException e) {
}
try {
BufferedReader br = new BufferedReader(new FileReader("$temp.$$p"));
s = br.readLine();
while(s != null) {
if(s.length() == 0)
g2.drawString(" ", PageX, PageY + fontHeight*(line++));
else {
//g2.drawString(s, PageX, PageY + fontHeight*(line++));
fontStringWidth = fm.stringWidth(s);
if(fontStringWidth > visiblePageWidth) {
String s1, s2;
int goBack = 0;
while( fm.stringWidth(s1 = s.substring(0, s.length() - goBack)) >
visiblePageWidth) {
goBack++;
}
s1 = s.substring(0, s.length() - goBack);
s2 = s.substring(s.length() - goBack - 1);
g2.drawString(s1, PageX, PageY + fontHeight*(line++));
g2.drawString(s2, PageX, PageY + fontHeight*(line++));
}
else {
g2.drawString(s, PageX, PageY + fontHeight*(line++));
}
}
s = br.readLine();
}
br.close();
} catch(IOException e) {
}
return Printable.PAGE_EXISTS;
}
其中
void print() 一个便捷打印方法,它显示打印对话框,然后在交互 模式下打印此 JTextComponent,不打印标题和脚注文本。
http://java.sun.com/docs/books/tutorial/2d/printing/swing.html