Oczywiście mam na myśli drukowanie drukarką a nie na stdout.
package add;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.sql.DriverManager;
import java.sql.ResultSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.*;
class AddRecords extends JFrame {
public AddRecords() {
setSize(160, 120);
setTitle("");
action();
}
public void action() {
createUI();
}
public void createUI() {
setLayout(new GridLayout(5, 2));
add(new JLabel("Nazwa bazy:"));
add(fNameBase);
add(new JLabel("User:"));
add(fNameUser);
add(new JLabel("Password"));
add(fPass);
add(new JLabel("Nazwa tabeli:"));
add(fNameTab);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection pol = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + fNameBase.getText(),
fNameUser.getText(), new String(fPass.getPassword()));
st = pol.createStatement();
} catch (Exception ek) {
JOptionPane.showMessageDialog(null, "Nie nazwiazno polaczenia");
}
get();
}
public void get() {
String polecenie = "select * from " + fNameBase.getText() + "." + fNameTab.getText();
try {
rs = st.executeQuery(polecenie);
while (rs.next()) {
s1 = rs.getString(1);
s2 = rs.getString(2);
s3 = rs.getString(3);
s4 = rs.getString(4);
panel = new Panel();
panel.setStr(s1 + " - " + s2 + " - " + s3 + " - " + s4 + "\n");
System.out.println(s1 + ", " + s2 + "," + s3 + "," + s4);
}
st.close();
} catch (Exception ek) {
}
try {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(panel);
if (pj.printDialog(pras)) {
pj.print(pras);
}
} catch (Exception e) {
}
}
});
add(b);
JButton more = new JButton("Wiecej");
more.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pras = new HashPrintRequestAttributeSet();
PrinterJob pj = PrinterJob.getPrinterJob();
pj.pageDialog(pras);
}
});
add(more);
}
JTextField fNameBase = new JTextField();
JTextField fNameUser = new JTextField();
JPasswordField fPass = new JPasswordField();
JTextField fNameTab = new JTextField();
java.sql.Statement st;
JButton b = new JButton("Print");
ResultSet rs;
String s1, s2, s3, s4;
PrintRequestAttributeSet pras;
Panel panel;
}
class Panel extends JPanel implements Printable {
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
narysuj(g2);
}
public void narysuj(Graphics2D g2) {
Font czcionka = new Font("Serif", Font.BOLD, 12);
g2.setFont(czcionka);
g2.setColor(Color.red);
g2.drawString(str, 20, y += 15);
}
public int print(Graphics g, PageFormat pf, int page) {
if (page >= 1) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) g;
g2.translate(pf.getImageableX(), pf.getImageableY());
narysuj(g2);
return Printable.PAGE_EXISTS;
}
public void setStr(String str) {
this.str = str;
}
int y = 25;
String str;
}
public class Add {
public static void main(String[] args) {
AddRecords ar = new AddRecords();
ar.setVisible(true);
}
}
Czy ktoś ma jakiś pomysł dlaczego wduszenie przycisku b nie powoduje otwarcia okienka drukowania?