2));
96 as2.addAttribute(TextAttribute.FONT, font);
java.length());
102
105
106 g2d.dispose();
107 }
108 }
182
BAB VII
PRINTING
MENCETAK
Dasar penggunaan object-object yang ada pada javax.print merupakan fondasi penting agar dapat
mencetak apa yang sudah tersusun dalam object Graphics2D maupun object JPanel.
Kompetensi:
Penting untuk mengetahui perangkat printer apa saja yang ada dalam komputer beserta format yang
didukungnya. Kita akan membuat aplikasi berbasis consol untuk mengetahui dan memahami objek-
3 import java.util.ArrayList;
4 import javax.print.*;
183
9 System.out.println("Menampikan informasi untuk printer default");
14 System.out.println(format);
15 }
16 }
17
25 System.out.println(format);
26 }
27 }
28 }
29
32 return service.getName();
33 }
34
39 printers.add(service.getName());
40 }
41 return printers;
42 }
43
45 System.out.println("TEST" + printerName);
184
46 PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
48 if (service.getName().equals(printerName)) {
49 return service.getSupportedDocFlavors();
50 }
51 }
52 return null;
53 }
54
56 cekDefault();
57 cekAllPrinters();
58 }
59 }
Output:
Perhatikanlah baris code nomor 10 dan 12, ada beberapa objek yang terlibat disana, antara lain:
untuk mendapatkan default print service, dan getSupportedDocFlavors() untuk mendapatkan format
Selanjutnya kita akan mempelajari bagaimana mencetak dengan perintah-perintah Graphics 2D dan
185
Ikuti langkah-langkah berikut:
2. Rubahlah nama-nama variabel sesuai dengan yang terlihat pada pane Navigator berikut ini:
3. Mutakhirkan source code dari JIFPrinter.java sehingga terlihat seperti berikut ini:
1 package sourcecode.printer;
3 import java.awt.Font;
4 import java.awt.Graphics;
5 import java.awt.Graphics2D;
6 import java.awt.print.PageFormat;
7 import java.awt.print.Printable;
10 import java.awt.print.PrinterException;
11 import java.awt.print.PrinterJob;
12 import java.util.ArrayList;
186
13 import javax.print.Doc;
14 import javax.print.DocFlavor;
15 import javax.print.PrintException;
16 import javax.print.PrintService;
17 import javax.print.PrintServiceLookup;
18 import javax.print.SimpleDoc;
19 import javax.print.attribute.HashAttributeSet;
20 import javax.print.attribute.standard.PrinterName;
21 import javax.swing.ImageIcon;
22
23
25
26 public JIFPrinters() {
27 initComponents();
29 setPrinterList();
30 }
31
32 @SuppressWarnings("unchecked")
35
45
46 setTitle("Printer");
47
48 btnTutup.setText("Tutup");
49 btnTutup.addActionListener(new java.awt.event.ActionListener() {
187
50 public void actionPerformed(java.awt.event.ActionEvent evt) {
51 btnTutupActionPerformed(evt);
52 }
53 });
54
55 taPrinterSupported.setColumns(20);
56 taPrinterSupported.setRows(5);
57 jScrollPane1.setViewportView(taPrinterSupported);
58
60 cbPrinterList.addItemListener(new java.awt.event.ItemListener() {
62 cbPrinterListItemStateChanged(evt);
63 }
64 });
65
66 jLabel2.setText("Printer tersedia");
67
68 lbDefaultPrinter.setText("Default Printer");
69
70 btnPrint2.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/sourcecode/gui/images/printer.png"))); // NOI18N
71 btnPrint2.addActionListener(new java.awt.event.ActionListener() {
73 btnPrint2ActionPerformed(evt);
74 }
75 });
76
77 btnPrint.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/sourcecode/gui/images/printer.png"))); // NOI18N
78 btnPrint.addActionListener(new java.awt.event.ActionListener() {
80 btnPrintActionPerformed(evt);
81 }
82 });
83
188
84 javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
85 jPanel1.setLayout(jPanel1Layout);
86 jPanel1Layout.setHorizontalGroup(
87 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
88 .addGroup(jPanel1Layout.createSequentialGroup()
89 .addContainerGap()
90 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG, false)
91 .addComponent(cbPrinterList, 0, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
92 .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)
93 .addGroup(jPanel1Layout.createSequentialGroup()
94 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen
t.TRAILING)
95 .addGroup(jPanel1Layout.createSequentialGroup()
javax.swing.GroupLayout.PREFERRED_SIZE)
98 .addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel1Layout.createSequentialGroup()
99 .addComponent(lbDefaultPrinter)
100 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
))
javax.swing.GroupLayout.PREFERRED_SIZE)
102 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
javax.swing.GroupLayout.PREFERRED_SIZE)))
105 );
106 jPanel1Layout.setVerticalGroup(
107 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
108 .addGroup(jPanel1Layout.createSequentialGroup()
109 .addContainerGap()
189
110 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAIL
ING, false)
111 .addGroup(jPanel1Layout.createSequentialGroup()
112 .addComponent(lbDefaultPrinter)
113 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
114 .addComponent(jLabel2))
javax.swing.GroupLayout.PREFERRED_SIZE)
javax.swing.GroupLayout.PREFERRED_SIZE))
117 .addGap(4, 4, 4)
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
119 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
Short.MAX_VALUE)
121 .addContainerGap())
122 );
123
125 getContentPane().setLayout(layout);
126 layout.setHorizontalGroup(
127 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
129 .addContainerGap()
130 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
132 .addGroup(layout.createSequentialGroup()
134 .addComponent(btnTutup)))
135 .addContainerGap())
136 );
137 layout.setVerticalGroup(
138 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
139 .addGroup(layout.createSequentialGroup()
190
140 .addContainerGap()
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
142 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
143 .addComponent(btnTutup)
144 .addContainerGap())
145 );
146
147 pack();
149
153 return;
154 }
156
157 taPrinterSupported.setText("");
160 }
161
162 }
166 }
167 return y;
168 }
175
191
176 if (services.length > 0) {
178 doc = new SimpleDoc((Printable) (Graphics g, PageFormat pageFormat, int pageIndex) -> {
179 if (pageIndex == 0) {
186 x1 += 10;
187 y1 += 10;
189
190 y1 += ii.getIconHeight();
20);
196 } else {
198 }
200 try {
203 }
204 } else {
206 }
207 }
208
211 this.dispose();
192
212 }
213
218
223 }
224
227 jPanel1.paint(g2);
228 //btnPrint.paint(g2);
230 }
231 });
233 return;
234 }
235
236 try {
237 pj.print();
240 }
241 }
244 cbPrinterList.removeAllItems();
246 cbPrinterList.addItem(printerName);
247 });
248 }
193
249
262 }
263
4. Pada SistemPenggajian.java Tambahkan JMenuItem pada JMenu Report dengan teks Printer…,
5. Pada mnPrintersTambahkan Events action performed, kemudian mutakhirkan source code sehingga
194
Gambar 256. Tampilan menu mnPrinters.
Untuk melihat hasil pencetakan, setting default printer ke Microsoft Print to PDF, sehingga kita akan
Berikut ini adalah respons ketika tombol printer yang pertama diklik:
Akan tampil kotak dialog Save Print Output As, ketiklah nama file yang diinginkan.
195
Gambar 258. Kotak dialog Save Print Output As.
196
Berikut ini adalah respons ketika tombol printer yang kedua diklik:
Pada tombol kedua ini menyediakan opsi pemilihan nama printer melalu Kotak dialog Print. Pilihlah
nama printer, lakukan perubahan setting jika diinginkan, kemudian klik [OK]
Akan tampil kotak dialog Save Print Output As, kemudian ketikkanlah nama file yang diinginkan.
197
Gambar 263. File berhasil disimpan.
198