import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.print.PrinterJob; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class PrinterBug extends JFrame{ public void init() { JButton button = new JButton("Printer"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { PrinterJob.getPrinterJob().printDialog(); } }); this.add(button); this.setBounds(300, 300, 100, 100); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { (new PrinterBug()).init(); } }); } }