我似乎无法弄清楚如何发送文本框控件以Java格式打印。
该程序创建单词搜索难题,现在我想打印它们。
我只是想打印文本Box控件......但我必须尝试其他方法如下。
我的第一个问题是当我尝试发送它时txtEasy.getText()尝试打印 一个非常长的字符串。这不是我想要的。所以我不得不采取一个非常长的字符串 并像这样解析出来。 15行的字数。不幸的是你在这里看不到。但这是一个15乘20的盒子。
M S N O I T I S O P M O C L G D R B P U D C K S Q G B E I Q C D I N M B P I U N P M J J U T N L I N C V D Q B W I U A U T O R N T F J O D N G T E L G B R K C O M M S W G H T S A N S I G U K X U X S E P I E Q C T G C B O X H J N B D T T J P I I A A R Q Y C S W I F O L M M N R T I A E L P S P D Q O U U A P E H F I T S O F Q N L P L L H D O Q F A O A G T Q A B A S S R W T C L T N P G E N S T X T Y P O V T I E W L Q C F I H S E J F E M L A D N D A E N W K T Q N E I I K I J V S I G F Y H S E E P I Y J U S H R D F V N D R D I B E F S R I U H U Y E V S F O E Q J X V R N V V R G R L G Q S B M F G E J
我的代码如下。
正如目前设置的那样,我将文本发送到打印机类为txtEasy.getText()
我现在使用此方法的问题是字体未正确对齐拼图。
所以我的两个问题......
1)有没有办法将文本框控件发送到打印机?
2)有没有办法格式化Strings字体?字体大小导致我的打印不均匀。
感谢您的帮助。
private void btnEasyPrintActionPerformed(java.awt.event.ActionEvent evt) {
//System.out.println(txtEasy.getText());
PrinterJob job = PrinterJob.getPrinterJob();
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PageFormat pf = job.pageDialog(aset);
job.setPrintable(new PrintPuzzle(txtEasy.getText()), pf);
boolean ok = job.printDialog(aset);
if (ok) {
try {
job.print(aset);
} catch (PrinterException ex) {
/* The job did not successfully complete */
}
}
//******** THE PRINT CLASS ********
import java.awt.*;
import java.awt.print.*;
public class PrintPuzzle implements Printable
{
String toPrint;
String formatedToPrint;
public PrintPuzzle(String item)
{
toPrint = item;
//toPrint = item;
//formatedToPrint = formatBoardToPrint(toPrint);
}
public int print(Graphics g, PageFormat pf, int page) throws
PrinterException
{
if (page > 0)
{
return NO_SUCH_PAGE;
}
/* User (0,0) is typically outside the imageable area, so we must
* translate by the X and Y values in the PageFormat to avoid clipping
*/
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
/* Now we perform our rendering */
String paintMe = "";
int YPosition = 20;
int first = 2;
int last = 46;
System.out.println(toPrint);
System.out.println("String Length is :" + toPrint.length());
for(int i = 0;i < 20;i++)
{
paintMe = toPrint.substring(first, last);
paintMe.
System.out.print(paintMe + "First Position : " + first + " Last Position : " + last + " YPosition : " + YPosition);
g.drawString(paintMe, 20, YPosition);
System.out.println();
first += 46;
last += 46;
YPosition += 10;
}//end for
//g.drawString(toPrint, 20, 20);
//g.drawString(toPrint, 20, 30);
/* tell the caller that this page is part of the printed document */
return PAGE_EXISTS;
}
}
答案 0 :(得分:1)
你的print()函数是否实际打印矩阵,但没有正确对齐?
调用g2d.setFont()并设置像Courier这样的固定宽度字体,这样就可以了。
您还可以调用JTextBox.print(),它将显示一个对话框并打印内容。 More info here.