Java drukowanie zawartości obiektu typu String.

0

Hi, pobieram z bazy rekordy i zapisuję do obiektu typu String. Chciałbym następnie zawartość obiektu String wydrukować. Wszędzie jednak widzę, że pokazywane jest drukowania zawartości obiektu JPanel. Czy można wydrukować zawartość stringa? Prosiłbym o jakiś prosty przykład lub wskazówkę.

Pozdrawiam i dziękuję za pomoc!

0
String s = "text";
system.out.println(s);
system.out.print(s);
0

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?

0

Zadowolę się chociaż podpowiedzą jak wydrukować zawartość obiektu typu String.

1 użytkowników online, w tym zalogowanych: 0, gości: 1