Hi!
Wir haben im Studium leider nichts über das Drucken aus Java heraus gelernt, ich wollte aber ein Programm für mich schreiben. Habe leider auch bei google und der internen Suche keine konstruktiven Lösungen gefunden.
Bei actionPerformed - "Drucken" wird mir immer das PrintJob.setPrintable(p) und das PrintJob.print() rot unterringelt und ich weiß nicht, wo der Fehler liegen könnte. Es wäre schön, wenn mir jemand einen Tipp geben könnte
Hier mein Code:
Wir haben im Studium leider nichts über das Drucken aus Java heraus gelernt, ich wollte aber ein Programm für mich schreiben. Habe leider auch bei google und der internen Suche keine konstruktiven Lösungen gefunden.
Bei actionPerformed - "Drucken" wird mir immer das PrintJob.setPrintable(p) und das PrintJob.print() rot unterringelt und ich weiß nicht, wo der Fehler liegen könnte. Es wäre schön, wenn mir jemand einen Tipp geben könnte
Hier mein Code:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
class TextPrintable implements Printable
{
private JTextArea text;
public int print(Graphics g, PageFormat pageFormat, int pageIndex)
{
((Graphics2D) g).translate(pageFormat.getImageableX(), pageFormat.getImageableY());
text.print(g);
return Printable.PAGE_EXISTS;
}
public void setText(JTextArea text)
{
this.text = text;
}
}
public class Holzliste
extends JFrame
implements ActionListener
{
private static final long serialVersionUID = 1L;
private JTextArea anzeige;
private JButton speichern;
private JButton drucken;
private JTextField nrAnzeige;
private JTextField längeAnzeige;
private JTextField durchmesserAnzeige;
private JComboBox klasseAnzeige;
private JComboBox güteklasseAnzeige;
private static final String[] klassen = {"Ia", "Ib", "IIa", "IIb", "IIIa", "IIIb", "IV", "V", "VI"};
private static final String[] güteklassen = {"A", "B", "C", "Cgw", "D", "K"};
private String[][] arr = new String[10][4];
private int idx = 0;
public Holzliste()
{
super("Holzliste");
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
JPanel oben = new JPanel();
oben.setLayout(new GridLayout(1,8));
JLabel nr = new JLabel("Nummer: ");
oben.add(nr);
nrAnzeige = new JTextField(""+(idx+1));
nrAnzeige.setEditable(false);
oben.add(nrAnzeige);
JLabel länge = new JLabel("Länge: ");
oben.add(länge);
längeAnzeige = new JTextField();
oben.add(längeAnzeige);
JLabel durchmesser = new JLabel("Durchmesser: ");
oben.add(durchmesser);
durchmesserAnzeige = new JTextField();
oben.add(durchmesserAnzeige);
JLabel klasse = new JLabel("Klasse: ");
oben.add(klasse);
klasseAnzeige = new JComboBox(klassen);
oben.add(klasseAnzeige);
JLabel güteklasse = new JLabel("Güteklasse: ");
oben.add(güteklasse);
güteklasseAnzeige = new JComboBox(güteklassen);
oben.add(güteklasseAnzeige);
getContentPane().add(oben, BorderLayout.NORTH);
anzeige = new JTextArea("Holzliste \n");
getContentPane().add(new JScrollPane(anzeige), BorderLayout.CENTER);
JPanel unten = new JPanel(new GridLayout(1,2));
speichern = new JButton("Speichern");
speichern.addActionListener(this);
unten.add(speichern);
drucken = new JButton("Drucken");
drucken.addActionListener(this);
unten.add(drucken);
getContentPane().add(unten, BorderLayout.SOUTH);
setLocation(400,200);
setSize(800, 500);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("Speichern"))
{
if(idx<arr.length)
{
arr[idx][0] = längeAnzeige.getText();
arr[idx][1] = durchmesserAnzeige.getText();
arr[idx][2] = (String) klasseAnzeige.getSelectedItem();
arr[idx][3] = (String) güteklasseAnzeige.getSelectedItem();
anzeige.append("Baumnummer: " + (idx+1) + "\t Länge: " + arr[idx][0] + "\t Durchmesser: " + arr[idx][1] + "\t Klasse: " + arr[idx][2] + "\t Güteklasse: " + arr[idx][3] + "\n");
idx++;
nrAnzeige.setText(""+(idx+1));
}
}
if(e.getActionCommand().equals("Drucken"))
{
TextPrintable p = new TextPrintable();
p.setText(anzeige);
PrintJob.setPrintable(p);
PrintJob.print();
}
}
public static void main(String[] args)
{
Holzliste f = new Holzliste();
}
}