java物理机,Java:将程序输出打印到物理打印机

我是一个相对较新的程序员,所以这可能是一个非常简单的问题,但是让我有些困惑。

我正在尝试将Java

GUI的最终输出打印到打印机。现在,在我的GUI中,有了它,当您单击打印时,会弹出一个弹出窗口,列出可用的打印机,并根据您选择的打印机,将其打印到该打印机。

但是事实并非如此。我通过搜索互联网来解决此问题,从而获得了大部分代码,并找到了一些很有前途的代码。但是,它是从文件打印出来的。因此,我在方法中所做的全部工作就是先将输出写入文件,以便可以使用相同的方法。

方法前的几件事:

没有引发任何错误或异常。

我每次尝试创建的文件始终存在,并且带有正确的文本。

我要打印的打印机正在接收打印作业,甚至认为它已经完成了。

如果我不得不猜测,我想我可能是将输出写入File的方式是打印机不会但不会告诉我。无论如何,这段代码中有很多地方我并不是很了解,所以请告诉我您可以找到什么。

这是我的代码:

private void printToPrinter()

{

File output = new File("PrintFile.txt");

output.setWritable(true);

//Will become the user-selected printer.

Object selection = null;

try

{

BufferedWriter out = new BufferedWriter(new FileWriter(output));

out.write(calculationTextArea.getText() + "\n" + specificTextArea.getText());

out.close();

}

catch (java.io.IOException e)

{

System.out.println("Unable to write Output to disk, error occured in saveToFile() Method.");

}

FileInputStream textStream = null;

try

{

textStream = new FileInputStream("PrintFile.txt");

}

catch (java.io.FileNotFoundException e)

{

System.out.println("Error trying to find the print file created in the printToPrinter() method");

}

DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

Doc mydoc = new SimpleDoc(textStream, flavor, null);

//Look up available printers.

PrintService[] printers = PrintServiceLookup.lookupPrintServices(flavor, null);

if (printers.length == 0)

{

// No printers found. Inform user.

jOptionPane2.showMessageDialog(this, "No printers could be found on your system!", "Error!", JOptionPane.ERROR_MESSAGE);

}

else

{

selection = jOptionPane2.showInputDialog(this, "Please select the desired printer:", "Print",

JOptionPane.INFORMATION_MESSAGE, null, printers,

PrintServiceLookup.lookupDefaultPrintService());

if (selection instanceof PrintService)

{

PrintService chosenPrinter = (PrintService) selection;

DocPrintJob printJob = chosenPrinter.createPrintJob();

try

{

printJob.print(mydoc, null);

}

catch (javax.print.PrintException e)

{

jOptionPane2.showMessageDialog(this, "Unknown error occured while attempting to print.", "Error!", JOptionPane.ERROR_MESSAGE);

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值