Hallo, ich möchte den Inhalt eines JFrames drucken besser gesagt alles was im scrollpane ist. Menü und Rahmen sowie scrollbar sollen weggealassen werden.
Als erstes habe ich mich an einfache Beispiele gewagt--> Text ausdrucken und das ging problemlos
dann habe ich mich an mein fenster gemacht und ausgedruckt.
Folgendes läuft da aber ne so wie es soll:
1. Wie kann man automatisch auf Querformat stellen?
2. Der Rechner zeigt mir zig mal das Druckenfenster an --> wo liegt hier das Problem?
3. warum druckt er immer nur eine Seite und das was nicht darauf past auf die nächste?
richtig gedruckt habe ig nicht, nur an OneNote geschickt um Papier zusparen.
Da der Code zulang war wollte ich ihn kürzen, dabei scheint mir aber ein Fehler unterlaufen zu sein und jetzt geht der code nicht mehr, deshalb hier mal die langform.
Das meiste ist ja nur für das Erstellen des Fensters. Das Drucken ist erst im zweiten Fenster möglich. Wenn ich über one Note ausgebe muss ich min 3-4 ja klicken und dann erst paar mal auf nein damit überhaupt was angezeigt wird.
Leider konnte ich kein Beispie finden was mir helfen konnte.
Als erstes habe ich mich an einfache Beispiele gewagt--> Text ausdrucken und das ging problemlos
dann habe ich mich an mein fenster gemacht und ausgedruckt.
Folgendes läuft da aber ne so wie es soll:
1. Wie kann man automatisch auf Querformat stellen?
2. Der Rechner zeigt mir zig mal das Druckenfenster an --> wo liegt hier das Problem?
3. warum druckt er immer nur eine Seite und das was nicht darauf past auf die nächste?
richtig gedruckt habe ig nicht, nur an OneNote geschickt um Papier zusparen.
Da der Code zulang war wollte ich ihn kürzen, dabei scheint mir aber ein Fehler unterlaufen zu sein und jetzt geht der code nicht mehr, deshalb hier mal die langform.
Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import java.awt.Container;
import java.awt.Graphics;
import javax.swing.*;
import java.awt.Font;
public class Chronik2 extends JFrame { //implements AdjustmentListener
private static final long serialVersionUID = 1L;
StammbaumFenster NeueCronik_stammbaum;
//####################################################################################################################
public static void main(String[] args) {
Chronik2 fenster = new Chronik2 ("FamilienChronik2");
fenster.pack();
fenster.setSize(965,900);
fenster.setResizable(false);
fenster.setVisible(true);
}
Chronik2 (String titel) {
super(titel);
GridBagLayout gbl = new GridBagLayout();
JPanel panel1 = new JPanel();
panel1.setLayout(gbl);
class CMeinActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
String label;
label = e.getActionCommand();
if (label.equals("Stammbaum anzeigen")) {
NeueCronik_stammbaum =new StammbaumFenster ("");
NeueCronik_stammbaum.pack();
NeueCronik_stammbaum.setSize(855,900);
NeueCronik_stammbaum.setResizable(false);
NeueCronik_stammbaum.setVisible(true);
}
}
}
//Menü #####################################################################################################
JMenuBar menueleiste =new JMenuBar();
JMenu menu3 =new JMenu("Datenbank");
JMenuItem item = new JMenuItem("Stammbaum anzeigen");
item.addActionListener(new CMeinActionLauscher());
menu3.add(item);
menueleiste.add(menu3);
setJMenuBar(menueleiste);
add(panel1);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public class StammbaumFenster extends JFrame implements Printable{
JButton Personen[] = new JButton[33];
JScrollPane scrollpane;
JPanel panel1 = new JPanel();
private static final long serialVersionUID = 1L;
public int print( Graphics g, PageFormat pageFormat, int pageIndex ) {
Toolkit tk = Toolkit.getDefaultToolkit();
PrintJob pj = tk.getPrintJob(NeueCronik_stammbaum, "", null );
if ( pj == null )
return Printable.NO_SUCH_PAGE;
scrollpane.printComponents( g );
g.dispose();
pj.end();
return Printable.PAGE_EXISTS;
}
void addComponent( Container cont, GridBagLayout gbl,Component c,int x, int y,int width, int height,double weightx, double weighty,int typ , int schriftgroese){
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = x; gbc.gridy = y; gbc.gridwidth = width; gbc.gridheight = height; gbc.weightx = weightx; gbc.weighty = weighty;
if (typ==1) {
((JButton) c).setMargin(new Insets(0, 0, 0, 0));
((JButton) c).setFont(new Font("Arial", Font.PLAIN,schriftgroese));
}
gbl.setConstraints(c, gbc );
cont.add( c );
}
StammbaumFenster(String titel){
super(titel);
class CMeinActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
String label;
label = e.getActionCommand();
if (label.equals("Drucken")) {
PrinterJob pjob = PrinterJob.getPrinterJob();
if ( pjob.printDialog() == false )
return;
try {
pjob.setPrintable(NeueCronik_stammbaum );
pjob.print();
} catch (PrinterException e1) {e1.printStackTrace();}
}
}
}
JMenuBar menueleiste =new JMenuBar();
JMenu menu1 =new JMenu("Drucken");
JMenuItem item = new JMenuItem("Drucken");
item.addActionListener(new CMeinActionLauscher());
menu1.add(item);
menueleiste.add(menu1);
setJMenuBar(menueleiste);
GridBagLayout gbl = new GridBagLayout();
panel1.setLayout(gbl);
int i=0;
for ( i=0;i<32;i++){ Personen[i]=new JButton("<html>Max<br> Muster</html>");}
for ( i=1;i<34;i++){ addComponent( panel1, gbl, new JLabel("<--->"), i , 0, 1, 1, 0 , 0 ,0,8);}
for (i=0 ;i<8 ;i++){
addComponent( panel1, gbl, Personen[i*2] , 4*i+2 , 1+i*2, 3, 1, 0 , 0 ,1 ,9 );
addComponent( panel1, gbl, Personen[i*2+1] , 4*i+2 , 2+i*2, 3, 1, 0 , 0 ,1 ,9 );
}
scrollpane = new JScrollPane(panel1);
add(scrollpane);
}
}
}
Das meiste ist ja nur für das Erstellen des Fensters. Das Drucken ist erst im zweiten Fenster möglich. Wenn ich über one Note ausgebe muss ich min 3-4 ja klicken und dann erst paar mal auf nein damit überhaupt was angezeigt wird.
Leider konnte ich kein Beispie finden was mir helfen konnte.