Specielt det foerste link er da lige ud af landevejen.
Men her kommer et eksempel paa kode uden og med print.
Uden:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class GUI1 extends JFrame {
private JPanel some;
private JButton prt;
public GUI1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
setTitle("GUI #1");
some = new Demo1();
getContentPane().add(some, BorderLayout.CENTER);
prt = new JButton("Print");
prt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(GUI1.this, "Printer ikke");
}
});
getContentPane().add(prt, BorderLayout.SOUTH);
pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new GUI1();
f.setVisible(true);
}
});
}
}
class Demo1 extends JPanel {
public Demo1() {
this.setPreferredSize(new Dimension(200,200));
}
@Override
public void paintComponent(Graphics g) {
g.drawString("Det virker OK !!", 20, 20);
}
}
Med:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class GUI2 extends JFrame implements Printable {
private JPanel some;
private JButton prt;
public GUI2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
setTitle("GUI #2");
some = new Demo2();
getContentPane().add(some, BorderLayout.CENTER);
prt = new JButton("Print");
prt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(GUI2.this, "Printer");
// Add this code:
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(GUI2.this);
if (job.printDialog()) {
try {
job.print();
} catch (Exception ex) {
ex.printStackTrace();
}
}
// ====
}
});
getContentPane().add(prt, BorderLayout.SOUTH);
pack();
}
// Add this method:
@Override
public int print(Graphics g, PageFormat pf, int pix) throws PrinterException {
super.print(g);
return pix == 0 ? PAGE_EXISTS : NO_SUCH_PAGE;
}
// ====
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new GUI2();
f.setVisible(true);
}
});
}
}
class Demo2 extends JPanel {
public Demo2() {
this.setPreferredSize(new Dimension(200,200));
}
@Override
public void paintComponent(Graphics g) {
g.drawString("Det virker OK !!", 20, 20);
}
}
1) tilfoej implements Printable
2) tilfoej print kode i actionPerformed
3) lav simpel printComponents metode