我是一个相对较新的程序员,所以这可能是一个非常简单的问题,但是让我有些困惑。
我正在尝试将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);
}
}
}
}