Bonjour à tous.
Je suis débutant en Java et j'essaye de développer une petite application.
Tout se passe bien ( la connexion avec BD, la saisi, .......),
j'ai créé un bouton "imprimer" qui consiste à afficher une nouvelle fenêtre pour l’Aperçu avant d'imprimer.
Le problème est au niveau cette fenêtre.
La Jframe s'ouvre en plein écran, mais le panel et les composantes non.
Comme çaNom : Sans titre.png
Affichages : 1017
Taille : 69,5 Ko:

Mon code pour la classe PreviewPrint:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
 
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package test;
 
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.print.*;
import javax.swing.*;
 
/**
 *
 * @author Is Me
 */
class PrintPreview extends JFrame implements ActionListener, ItemListener {
    JButton printButton = new JButton("Imprimer");
    Pageable pageable = null;
    double scale = 1.0;
    Page page[] = null;
    JComboBox combobox = new JComboBox();
    CardLayout cardlayout = new CardLayout();
    JPanel previewPanel = new JPanel(cardlayout);
    JButton backButton = new JButton("Précedente"), forwardButton = new JButton("Suivante");
 
    public PrintPreview(final Printable printable, final PageFormat pageFormat) {
        super("Aperçu");        
        pageable = new Pageable() {
            @Override
            public int getNumberOfPages() {
                Graphics graphics = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB).getGraphics();                
                int numPages = 0;
                try {
                    while (printable.print(graphics, pageFormat, numPages) == Printable.PAGE_EXISTS) {
                        numPages++;
                    }
                } catch (Exception ex) {
                }
                return numPages;
            }
 
            @Override
            public PageFormat getPageFormat(int x) {
                return pageFormat;
            }
 
            @Override
            public Printable getPrintable(int x) {
                return printable;
            }
        };
        createPreview();
    }
 
    private void createPreview() {
        page = new Page[pageable.getNumberOfPages()];
        PageFormat pageFormat = pageable.getPageFormat(0);
        Dimension size = new Dimension((int) pageFormat.getPaper().getWidth(), (int) pageFormat.getPaper().getHeight());
        if (pageFormat.getOrientation() != PageFormat.PORTRAIT) {
            size = new Dimension(size.height, size.width);
        }
        for (int i = 0; i < page.length; i++) {
            combobox.addItem("" + (i + 1));
            page[i] = new Page(i, size);
            previewPanel.add("" + (i + 1), new JScrollPane(page[i]));
        }
        setTopPanel();
        getContentPane().add(previewPanel, "Center");
        pack();
        setExtendedState(Frame.MAXIMIZED_BOTH);
        setVisible(true);
    }
 
    private void setTopPanel() {
        FlowLayout fl = new FlowLayout();
        GridBagLayout gbl = new GridBagLayout();
 
        JPanel topPanel = new JPanel(gbl), temp = new JPanel(fl);
        backButton.addActionListener(this);
        forwardButton.addActionListener(this);
        backButton.setEnabled(false);
        forwardButton.setEnabled(page.length > 1);
 
        temp.add(combobox);
        temp.add(backButton);
        temp.add(forwardButton);
        temp.add(printButton);
 
 
        topPanel.add(temp);
        printButton.addActionListener(this);
        combobox.addItemListener(this);
        getContentPane().add(topPanel, "North");
    }
 
    @Override
    public void itemStateChanged(ItemEvent ie) {
        cardlayout.show(previewPanel, (String) combobox.getSelectedItem());
        backButton.setEnabled(combobox.getSelectedIndex() == 0 ? false : true);
        forwardButton.setEnabled(combobox.getSelectedIndex() == combobox.getItemCount() - 1 ? false : true);
        validate();
    }
 
    @Override
    public void actionPerformed(ActionEvent ae) {
        Object o = ae.getSource();
        if (o == printButton) {
            try {
                PrinterJob pj = PrinterJob.getPrinterJob();
                pj.defaultPage(pageable.getPageFormat(0));
                pj.setPageable(pageable);
                if (pj.printDialog()) {
                    pj.print();
                }
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex.toString(), "Error in Printing", 1);
            }
        } else if (o == backButton) {
            combobox.setSelectedIndex(combobox.getSelectedIndex() == 0 ? 0 : combobox.getSelectedIndex() - 1);
            if (combobox.getSelectedIndex() == 0) {
                backButton.setEnabled(false);
            }
        } else if (o == forwardButton) {
            combobox.setSelectedIndex(combobox.getSelectedIndex() == combobox.getItemCount() - 1 ? 0 : combobox.getSelectedIndex() + 1);
            if (combobox.getSelectedIndex() == combobox.getItemCount() - 1) {
                forwardButton.setEnabled(false);
            }
        }
    }
 
    class Page extends JLabel {
        final int n;
        final PageFormat pageformat;
        BufferedImage bufferimage = null;
        Dimension size = null;
 
        public Page(int currentpage, Dimension size) {
            this.size = size;
            bufferimage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
            n = currentpage;
            pageformat = pageable.getPageFormat(n);
            Graphics g = bufferimage.getGraphics();
            g.setColor(Color.WHITE); 
            g.fillRect(0, 0, (int) pageformat.getWidth(), (int) pageformat.getHeight());
            try {
                pageable.getPrintable(n).print(g, pageformat, n);
            } catch (Exception ex) {
            }
            setIcon(new ImageIcon(bufferimage));
        }
    }
}