0

JFrame のコンテンツを印刷するためのアプリケーションを作成しています。正常に動作しますが、私の問題は、Print JButton が Form_1.java にあり、Printing content がオンになっているなど、別のフォームにある「Print」JButton でそのアプリケーションを呼び出さなければならないことです。 Form_2.java...印刷ボタンでActionListenerを使用していますが、機能しません..plsは私のプロジェクトが締め切りになっているのを助けてくださいpls...私はここに私のコードを投稿しました:

public class PrintUI implements Printable, ActionListener {
    JFrame frameToPrint;

    public int print(Graphics g, PageFormat pf, int page) throws
            PrinterException {
        if (page > 0) {
            return NO_SUCH_PAGE;
        }

        Graphics2D g2d = (Graphics2D) g;
        g2d.translate(pf.getImageableX(), pf.getImageableY() - 55);
        frameToPrint.setVisible(true);
        frameToPrint.print(g);
        return PAGE_EXISTS;
    }

    public void actionPerformed(ActionEvent e) {
        PrinterJob job = PrinterJob.getPrinterJob();
        job.setPrintable(this);
        boolean ok = job.printDialog();
        if (ok) {
            try {
                job.print();
            } catch (PrinterException ex) {

            }
        }
    }

    public PrintUI(JFrame f) {
        frameToPrint = f;
    }

    public static void main(String args[]) {

        final JButton printButton = new JButton("Print");
        UIManager.put("swing.boldMetal", Boolean.TRUE);
        JFrame f = new JFrame("GatePass");

        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        Font f1 = new Font("Times New Roman", Font.BOLD, 12);

        printButton.setVisible(true);
        JLabel label1 = new JLabel("Vision Techno Solutions", JLabel.CENTER);
        label1.setBounds(30, 30, 200, 40);
        JLabel label2 = new JLabel("Batch No:");
        label2.setBounds(10, 70, 80, 20);
        JLabel label3 = new JLabel("Date and Time:");
        label3.setBounds(10, 100, 120, 20);
        JLabel label4 = new JLabel("Visitor's Name:");
        label4.setBounds(10, 130, 120, 20);
        JLabel label5 = new JLabel("Concern Person:");
        label5.setBounds(10, 160, 120, 20);
        JLabel label6 = new JLabel("Purpose of Visit:");
        label6.setBounds(10, 190, 120, 20);
        JLabel label7 = new JLabel("Manager's Sign");
        label7.setBounds(140, 230, 120, 20);
        JLabel label8 = new JLabel("Visitor's Sign");
        label8.setBounds(10, 230, 120, 20);

        printButton.addActionListener(new PrintUI(f));
        f.setSize(300, 350);
        f.setLocationRelativeTo(null);
        f.add(printButton, BorderLayout.SOUTH);
        f.setResizable(false);
        f.setVisible(true);
        printButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                printButton.setVisible(false);
            }
        });
    }
}
4

1 に答える 1

3

ここで何をしようとしているのか正確にはわかりません。

あなたは別のフレームを印刷しようとしていると言いましたが、

printButton.addActionListener(new PrintUI(f));

PrintUI現在のフレームを印刷するクラスを追加していることを示します。

別のフレームを印刷する場合は、最初にコード内に別のフレームを作成し、それを表示してから、新しいフレームを に渡しPrintUI()ます。これでうまくいくはずです。

于 2012-06-20T05:21:37.860 に答える