关于打印的问题! 是不是Panel里面的点和打印里面点的大小是不一样的啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可是只有Graphics2D才可以设定scale,而Graphics没有,但printerJob获得的只能是Graphics,请问该怎么弄啊? JAVA打印确实有点困难,我也在学习,可以参考一下文章:http://www-900.ibm.com/developerWorks/cn/java/l-javaprint/index.shtml 你可以把Panel的内容取出来,做成一个Book,在Book中设定打印的内容,这样比较灵活,自由度比较大。 to draco2002(Draco): 我就是按照这个里面做的,呵呵。to bingle0729(月黑风高): Book能不能把要打印的内容缩小?(要打印的内容是图形) Graphics2D g2 = (Graphics2D)Graphics; 很奇怪!如果如果Graphics2D g2 = (Graphics2D)Graphics;被转换类型的Graphics是JPanel.getGraphics();,那么就很正常。如果被转换类型的Graphics是printerJob.getGraphics();,那么就会抛掷出ClassCastException的异常。同是Graphics可为什么会这样? import java.awt.*;import java.awt.event.*;import java.awt.print.*;import javax.swing.*; public class printpanel extends JPanel implements ActionListener, Printable { public printpanel() { //setBackground(Color.white); JButton b = new JButton("MyButton"); b.addActionListener(this); add(b); } public void actionPerformed(ActionEvent e) { PrinterJob printJob = PrinterJob.getPrinterJob(); printJob.setPrintable(this); try { printJob.print(); } catch (Exception PrintException) { } } public int print(Graphics g, PageFormat pf, int pi) throws PrinterException { if (pi >= 1) { return Printable.NO_SUCH_PAGE; } Graphics2D g2d = (Graphics2D)g; g2d.translate(100, 100); g2d.scale(0.5, 0.5); Font f = new Font("Monospaced",Font.PLAIN,12); g.setFont (f); paint (g); return Printable.PAGE_EXISTS; } public static void main(String s[]) { WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }; Frame f = new Frame("printbutton"); f.addWindowListener(l); f.add("Center", new printpanel()); f.pack(); f.setSize(new Dimension(400,300)); f.show(); }}看看这个 如何从request中取得servletcontext? 关于BorderLayout的一些问题 继承与serializable的应用题,我选错了。。。 开发这样的项目需要什么知识? jdK1.5 当中的类型转换 请问mysql里面的text字段怎么进行模糊查询 请问linux下串口通信需要javax.comm包么? 早上好 三百分讨教菜鸟问题:) 调用Object类的equals方法的结果 指定JButton 大小,使JButton不布满整个JPanel。怎么做? java.endorsed problem
我就是按照这个里面做的,呵呵。to bingle0729(月黑风高):
Book能不能把要打印的内容缩小?(要打印的内容是图形)
如果如果
Graphics2D g2 = (Graphics2D)Graphics;
被转换类型的Graphics是JPanel.getGraphics();,那么就很正常。
如果被转换类型的Graphics是printerJob.getGraphics();,那么就会抛掷出ClassCastException的异常。
同是Graphics可为什么会这样?
import java.awt.event.*;
import java.awt.print.*;import javax.swing.*; public class printpanel extends JPanel implements ActionListener, Printable { public printpanel() {
//setBackground(Color.white);
JButton b = new JButton("MyButton");
b.addActionListener(this);
add(b); } public void actionPerformed(ActionEvent e) {
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);
try { printJob.print(); } catch (Exception PrintException) { }
} public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
if (pi >= 1) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D)g;
g2d.translate(100, 100);
g2d.scale(0.5, 0.5);
Font f = new Font("Monospaced",Font.PLAIN,12);
g.setFont (f);
paint (g);
return Printable.PAGE_EXISTS;
} public static void main(String s[]) {
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
};
Frame f = new Frame("printbutton");
f.addWindowListener(l);
f.add("Center", new printpanel());
f.pack();
f.setSize(new Dimension(400,300));
f.show();
}
}
看看这个