Я относительно новый программист, так что это может быть очень простой вопрос, но он немного озадачил меня.
Я пытаюсь распечатать окончательный вывод моего Java GUI на принтер.Теперь в моем графическом интерфейсе у меня так, что когда вы нажимаете «Печать», появляется всплывающее окно со списком доступных принтеров, и на основе выбранного вами оно должно печататься на этом принтере.
Однако это не так.Я получил большую часть своего кода, отыскивая в Интернете решения этой проблемы, и нашел многообещающий код.Тем не менее, он распечатал файл.Таким образом, все, что я просто делаю в своем методе, это сначала записываю свои выходные данные в файл, чтобы я мог использовать ту же методологию.
Несколько вещей перед методом:
Нет ошибок или исключений.
Файл, который я пытаюсь выполнитьcreate каждый раз всегда существует и имеет правильный текст.
Принтер, который я печатаю в IS, получает задание на печать, он даже думает, что выполнил его.
Если бы мне пришлось угадывать, я бы подумал, что, возможно, я записываю вывод в файл так, как принтер ничего не скажет, но не скажет мне.В любом случае, в этом коде есть немного информации, которую я не совсем понимаю, поэтому, пожалуйста, дайте мне знать, что вы можете найти.
Вот мой код:
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);
}
}
}
}