hi Mark,
Printing in java for mac OS X is not different from printing for windows OS. Here is the sample code which u can use. I've used similar code form printing in my java app running on Mac OS X.
good luck.
import java.awt.geom.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.print.PrinterJob;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.awt.print.*;
public class ShapesPrint extends JPanel implements Printable, ActionListener
{
final static JButton button = new JButton("Print");
public ShapesPrint()
{
setBackground(Color.white);
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() instanceof JButton)
{
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);
if (printJob.printDialog())
{
try
{
printJob.print();
} catch (Exception ex)
{
ex.printStackTrace();
}
}
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawString("Hello World", 50,50);
}
public int print(Graphics g, PageFormat pf, int pi) throws PrinterException
{
if (pi >= 1)
{
return Printable.NO_SUCH_PAGE;
}
g.drawString("Hello world", 50,50);
return Printable.PAGE_EXISTS;
}
public static void main(String s[])
{
WindowListener l = new WindowAdapter()
{
public void windowClosing(WindowEvent e) {System.exit(0);}
public void windowClosed(WindowEvent e) {System.exit(0);}
};
JFrame f = new JFrame();
f.addWindowListener(l);
JPanel panel = new JPanel();
panel.add(button);
f.getContentPane().add(BorderLayout.SOUTH, panel);
f.getContentPane().add(BorderLayout.CENTER, new ShapesPrint());
f.setSize(200, 200);
f.show();
}
}