import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.print.Printable;
import java.awt.Graphics;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import javax.swing.JLabel;
import javax.swing.Icon;
import java.awt.Graphics2D;
import java.awt.print.PrinterJob;
import java.awt.Robot;
import java.awt.print.*;
class Glossar extends JFrame
{
/*-----------------------------------------------------*/
/* Variablendeklaration
/*-----------------------------------------------------*/
public static Container con1;
public static JScrollPane reiter1Pane, reiter2Pane, reiter3Pane, reiter4Pane, reiter5Pane, reiter6Pane, reiter7Pane;
final JTabbedPane tp = new JTabbedPane();
public static PageFormat pageFormat;
public static Paper paper;
private Formular formular;
/*-----------------------------------------------------------------------
/* Konstruktor
/*-----------------------------------------------------------------------*/
public Glossar( String title )
{
super( title );
con1=getContentPane();
con1.setLayout(new BorderLayout());
JButton drucken = new JButton("drucken");
/*------------------------------------------------------------*/
/* Schaltfläche "drucken"*/
/*------------------------------------------------------------*/
class druckenListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
formular = new Formular(con1);
PrinterJob pj = PrinterJob.getPrinterJob();
pageFormat = new PageFormat();
paper = new Paper();
reiter3Pane.setSize(500,500);
paper.setSize(594.936, 841.536); // Set to A4 size.
paper.setImageableArea(0, 0, 594.936, 841.536); // Set the margins.
pageFormat.setPaper(paper);
pj.setPrintable(formular, pageFormat);
try
{
if (pj.printDialog())
{
pj.print();
}
} catch (PrinterException pe)
{
System.err.println(pe);
}
}
}
/*---------------------------------------------------*/
/*Formatierungen
/*---------------------------------------------------*/
Font schrift = new Font("", Font.BOLD, 26);
Font schrift_1 = new Font("", Font.PLAIN, 20);
Font kursiv = new Font("", Font.ITALIC, 12);
Font fett = new Font("", Font.BOLD, 12);
int rot = 255;
int grün = 255;
int blau = 255;
int rot_schwarz = 0;
int grün_schwarz = 0;
int blau_schwarz = 0;
Color farbe_weiss = new Color(rot, grün, blau);
Color farbe_schwarz = new Color(rot_schwarz, grün_schwarz, blau_schwarz);
Border rahmen = BorderFactory.createMatteBorder(5, 5, 5, 5, Color.black);
/*-----------------------------------------------------------------------------
* Reiter 1 Anfang
/*-----------------------------------------------------------------------------*/
JPanel reiter1 = new JPanel(new BorderLayout());
JPanel linke_seite = new JPanel(new GridLayout(1,0));
JPanel rechte_seite = new JPanel(new GridLayout(1,0));
JLabel absatz1 = new JLabel("1. Absatz");
JLabel absatz4 = new JLabel("2. Absatz");
linke_seite.add(absatz1);
rechte_seite.add(absatz4);
reiter1.add(linke_seite, BorderLayout.WEST);
reiter1.add(rechte_seite, BorderLayout.CENTER);
reiter1Pane = new JScrollPane(reiter1);
tp.addTab("A Einführung", reiter1Pane);
con1.add(tp, BorderLayout.CENTER);
con1.add(drucken, BorderLayout.NORTH);
/*-----------------------------------------------------------------------------
/* Reiter 1 Ende
/*-----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
/* Reiter 2 Anfang
/*-----------------------------------------------------------------------------*/
JPanel reiter3 = new JPanel(new BorderLayout());
JPanel linke_seite_reiter3 = new JPanel(new GridLayout(1,0));
JPanel rechte_seite_reiter3 = new JPanel(new GridLayout(1,0));
JLabel absatz20 = new JLabel("Absatz 20");
linke_seite_reiter3.add(absatz20);
JLabel absatz31 = new JLabel("Absatz 31");
rechte_seite_reiter3.add(absatz31);
reiter3.add(linke_seite_reiter3, BorderLayout.WEST);
reiter3.add(rechte_seite_reiter3, BorderLayout.CENTER);
reiter3Pane = new JScrollPane(reiter3);
tp.addTab("Was wird in den einzelnen Teilen dokumentiert?", reiter3Pane);
con1.add(tp);
/*-----------------------------------------------------------------------------
/* Reiter 2 Ende
/*-----------------------------------------------------------------------------*/
drucken.addActionListener(new druckenListener());// Listener zuordnen
}
public static void main(String[] args)
{
Glossar frm = new Glossar("Glossar");
frm.setVisible(true);
frm.setSize(400,400);
frm.pack();
}
}
class Formular implements Printable
{
private Container container;
private int index = -1;
private Rectangle page = new Rectangle(0, 0, 0, 0);
Formular(Container container)
{
this.container = container;
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex)
{
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
int iWidth = (int) pageFormat.getImageableWidth();
int iHeight = (int) pageFormat.getImageableHeight();
double scaleFactor = (double) iWidth / (double) container.getWidth();
while (index < pageIndex)
{
if (pageIndex > container.getHeight() * scaleFactor / iHeight)
{
return NO_SUCH_PAGE;
}
page.y += page.height;
page.width = (int) (iWidth / scaleFactor);
page.height = (int) (iHeight / scaleFactor);
index++;
}
g2d.scale(scaleFactor, scaleFactor);
g2d.translate(0, -page.y);
g2d.clip(page);
container.print(g2d);
return PAGE_EXISTS;
}
}