Hallo zusammen,
ich habe da ein Problem....
Und zwar habe ich ein Splitpane und möchte nur die rechte Seite davon drucken...
Auf der linken Seite habe ich einen JTable der sich je nach Selektierung dynamisch ändert.
Wenn ich dann auf einen der Ergebnisse klicke zeigt es mir auf der rechten Seite den Namen, das Bild und die Beschreibung an. Diese drei Elemente möchte ich nun drucken...
Ich zeig euch mal meine Code Abschnitte
Das rechte Pane
Hier ist der Listener zum Drucken
Und hier die Print Klasse.
Vielen Dank schonmal im Voraus...
Gruß Popon
ich habe da ein Problem....
Und zwar habe ich ein Splitpane und möchte nur die rechte Seite davon drucken...
Auf der linken Seite habe ich einen JTable der sich je nach Selektierung dynamisch ändert.
Wenn ich dann auf einen der Ergebnisse klicke zeigt es mir auf der rechten Seite den Namen, das Bild und die Beschreibung an. Diese drei Elemente möchte ich nun drucken...
Ich zeig euch mal meine Code Abschnitte
Das rechte Pane
Java:
//--------------------Panel Right------------------------
//cocktailnamelabel hinzufuegen
this.cocktailName.setFont(new Font("SansSerif", Font.BOLD | Font.ITALIC, 25));
r.gridx = 0;
r.gridy = 0;
p_right.add(cocktailName, r);
//bild hinzufuegen
r.gridx = 0;
r.gridy = 1;
p_right.add(imageLabel, r);
r.gridx = 0;
r.gridy = 3;
recipeTextArea.setBackground(this.cocktailName.getBackground());
recipeTextArea.setBounds(400, 275, 550, 600);
// texteArea.setBounds(x, y, width, height)
recipeTextArea.setLineWrap(true); // automatischer Textumbruch am Ende der TextArea
recipeTextArea.setWrapStyleWord(true); // bricht den TExt immer nach einem ganzen Wort um
p_right.add(recipeTextArea, r);
Hier ist der Listener zum Drucken
Java:
AbstractAction printAction = new AbstractAction("Drucken", null)
{
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent arg0)
{
Print print = new Print();
print.print(cocktailName,cocktailImage,recipeTextArea);
}
};
Und hier die Print Klasse.
Java:
package Projekt;
import java.awt.*;
import java.awt.image.ImageObserver;
import java.awt.print.*;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTextArea;
public class Print implements Printable
{
private String name ="";
private Image image;
private String desc = "";
public void print(JLabel cocktailName, ImageIcon cocktailImage,
JTextArea textArea)
{
this.name = cocktailName.getText();
this.image = cocktailImage.getImage();
this.desc = textArea.getText();
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setPrintable(this);
printerJob.printDialog();
printerJob.pageDialog(new PageFormat());
try
{
printerJob.print();
}
catch (PrinterException pe)
{
}
}
public int print(Graphics g, PageFormat pf, int pageNr)
{
if (pageNr == 1 ) return NO_SUCH_PAGE;
g.setColor(Color.black);
g.setFont(new Font("Times", Font.PLAIN, 12));
g.drawString(this.name+"\n", 100, 120);
g.drawString("\n"+this.desc, 100, 220);
return PAGE_EXISTS;
}
}
Vielen Dank schonmal im Voraus...
Gruß Popon