Java Печать содержимого текстовой области на принтер

Я пытаюсь создать программу, которая будет печатать то, что написано в jTextArea, моя проблема в том, что когда выскакивает printDialog и я нажимаю OK, принтер не печатает или когда я меняю свойства на Paper Source на Cont.Feed - No Break, отображается пустая страница, которую я пытаюсь распечатать на термопринтере чеков.

вот мой код

public int print(Graphics g, PageFormat pf, int page) throws
                                                    PrinterException {

    if (page > 0) {
        return NO_SUCH_PAGE;
    }

    Graphics2D g2d = (Graphics2D)g;
    g2d.translate(pf.getImageableX(), pf.getImageableY()-55);

    frameToPrint.print(g);

    return PAGE_EXISTS;
}

public void actionPerformed(ActionEvent e) {
     PrinterJob job = PrinterJob.getPrinterJob();
     job.setPrintable(this);
     boolean ok = job.printDialog();
     if (ok) {
         try {
              job.print();
         } catch (PrinterException ex) {

         }
     }
}

public PrintUIWindow(JFrame f) {
    frameToPrint = f;
}

public static void main(String args[]) {
    UIManager.put("swing.boldMetal", Boolean.FALSE);
    JFrame f = new JFrame("Print UI Example");
    f.addWindowListener(new WindowAdapter() {
       public void windowClosing(WindowEvent e) {System.exit(0);}
    });

    JLabel label1=new JLabel("Selling Bill",JLabel.CENTER);
    JLabel label2=new JLabel("Customer Name :Mahmoud Saleh       ",JLabel.LEFT);
    JLabel label3=new JLabel("Buying Date :29/8/2008             ",JLabel.LEFT);
    JLabel label4=new JLabel("Book Buyed :Java Printing          ",JLabel.LEFT);
    JLabel label5=new JLabel("Number : 6 Copies                  ",JLabel.LEFT);
    JLabel label6=new JLabel("Total Price :600 $                 ",JLabel.LEFT);

    label1.setFont(new Font("Courier New", Font.BOLD, 13));
    label2.setFont(new Font("Courier New", Font.BOLD, 13));
    label3.setFont(new Font("Courier New", Font.BOLD, 13));
    label4.setFont(new Font("Courier New", Font.BOLD, 13));
    label5.setFont(new Font("Courier New", Font.BOLD, 13));
    label6.setFont(new Font("Courier New", Font.BOLD, 13));

    JButton printButton = new JButton("Print This Window");
    printButton.addActionListener(new PrintUIWindow(f));
    JPanel panel=new JPanel();
    panel.setLayout(new GridLayout(6,1));
    panel.add(label1);
    panel.add(label2);
    panel.add(label3);
    panel.add(label4);
    panel.add(label5);
    panel.add(label6);
    f.setSize(300,300);
    f.setLocationRelativeTo(null);
    f.add(panel,BorderLayout.CENTER);
    f.add(printButton,BorderLayout.SOUTH);
    panel.setBackground(Color.WHITE);
    f.setResizable(false);
    f.setVisible(true);
}

person askManiac    schedule 17.07.2014    source источник
comment
Не проглатывайте исключительную ситуацию PrinterException в блоке catch. Есть ли у вас там исключения?   -  person StanislavL    schedule 17.07.2014
comment
Возможно, вы захотите посмотреть ссылку   -  person Ajay    schedule 17.07.2014


Ответы (1)


Я не совсем понимаю, о чем вы спрашиваете. Надеюсь, это поможет:

http://www.coderanch.com/t/336165/GUI/java/print-text-text-area

Дает ответ на тему вашего вопроса :)

person Riyafa Abdul Hameed    schedule 05.01.2015