⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textareaprintingdemo.java

📁 java tutorial.sun公司官方出品。java入门书籍。最新版
💻 JAVA
字号:
/* * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * *   - Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. * *   - Redistributions in binary form must reproduce the above copyright *     notice, this list of conditions and the following disclaimer in the *     documentation and/or other materials provided with the distribution. * *   - Neither the name of Sun Microsystems nor the names of its *     contributors may be used to endorse or promote products derived *     from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package misc;/* * TextAreaPrintingDemo.java requires the following files: * toprint.txt * guide.txt * images/print.png */import java.awt.print.PrinterException;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import javax.swing.*;import java.text.MessageFormat;import javax.xml.transform.Source;public class TextAreaPrintingDemo extends javax.swing.JFrame {        public TextAreaPrintingDemo() {        initComponents();        load(text, "toprint.txt");        load(guideText, "guide.txt");    }        /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents    private void initComponents() {        jScrollPane1 = new javax.swing.JScrollPane();        text = new javax.swing.JTextArea();        headerLabel = new javax.swing.JLabel();        headerField = new javax.swing.JTextField();        footerLabel = new javax.swing.JLabel();        footerField = new javax.swing.JTextField();        interactiveCheck = new javax.swing.JCheckBox();        printButton = new javax.swing.JButton();        guideText = new javax.swing.JTextArea();        backgroundCheck = new javax.swing.JCheckBox();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);        setTitle("TextAreaPrintingDemo");        text.setColumns(20);        text.setRows(5);	text.setMargin(new java.awt.Insets(2, 2, 2, 2));        jScrollPane1.setViewportView(text);        headerLabel.setText("Header");        headerField.setText("William Shakespeare");        footerLabel.setText("Footer");        footerField.setText("Page {0}");        interactiveCheck.setSelected(true);        interactiveCheck.setText("Show Progress Dialog");        interactiveCheck.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));        printButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("images/print.png")));        printButton.setText("Print!");        printButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                print(evt);            }        });        guideText.setColumns(20);        guideText.setEditable(false);        guideText.setLineWrap(true);        guideText.setRows(5);        guideText.setWrapStyleWord(true);        guideText.setOpaque(false);        backgroundCheck.setSelected(true);        backgroundCheck.setText("Print in Background");        backgroundCheck.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());        getContentPane().setLayout(layout);        layout.setHorizontalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)                    .addComponent(guideText)                    .addGroup(layout.createSequentialGroup()                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)                            .addComponent(backgroundCheck, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)                            .addComponent(interactiveCheck, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE))                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                        .addComponent(printButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))                    .addGroup(layout.createSequentialGroup()                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)                            .addComponent(footerLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)                            .addComponent(headerLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE))                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)                            .addComponent(footerField)                            .addComponent(headerField, javax.swing.GroupLayout.PREFERRED_SIZE, 209, javax.swing.GroupLayout.PREFERRED_SIZE))))                .addGap(15, 15, 15)                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 343, Short.MAX_VALUE)                .addContainerGap())        );        layout.setVerticalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE)                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()                        .addComponent(guideText, javax.swing.GroupLayout.DEFAULT_SIZE, 260, Short.MAX_VALUE)                        .addGap(18, 18, 18)                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                            .addComponent(headerLabel)                            .addComponent(headerField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                            .addComponent(footerLabel)                            .addComponent(footerField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))                        .addGap(27, 27, 27)                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                            .addGroup(layout.createSequentialGroup()                                .addComponent(interactiveCheck, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                                .addComponent(backgroundCheck, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))                            .addComponent(printButton, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))))                .addContainerGap())        );        pack();    }// </editor-fold>//GEN-END:initComponents    private void load(JTextArea comp, String fileName) {        try {            comp.read(                new InputStreamReader(                    getClass().getResourceAsStream(fileName)),                null);        } catch (IOException ex) {            // should never happen with the resources we provide            ex.printStackTrace();        }    }        private void print(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_print        MessageFormat header = createFormat(headerField);        MessageFormat footer = createFormat(footerField);        boolean interactive = interactiveCheck.isSelected();        boolean background = backgroundCheck.isSelected();        PrintingTask task = new PrintingTask(header, footer, interactive);        if (background) {            task.execute();        } else {            task.run();        }    }//GEN-LAST:event_print        private class PrintingTask extends SwingWorker<Object, Object> {        private final MessageFormat headerFormat;        private final MessageFormat footerFormat;        private final boolean interactive;        private volatile boolean complete = false;        private volatile String message;                public PrintingTask(MessageFormat header, MessageFormat footer,                            boolean interactive) {            this.headerFormat = header;            this.footerFormat = footer;            this.interactive = interactive;        }                @Override        protected Object doInBackground() {            try {                complete = text.print(headerFormat, footerFormat,                        true, null, null, interactive);                message = "Printing " + (complete ? "complete" : "canceled");            } catch (PrinterException ex) {                message = "Sorry, a printer error occurred";            } catch (SecurityException ex) {                message =                    "Sorry, cannot access the printer due to security reasons";            }            return null;        }                @Override        protected void done() {            message(!complete, message);        }    }        private MessageFormat createFormat(JTextField source) {        String text = source.getText();        if (text != null && text.length() > 0) {            try {                return new MessageFormat(text);            } catch (IllegalArgumentException e) {                error("Sorry, this format is invalid.");            }        }        return null;    }        private void message(boolean error, String msg) {        int type = (error ? JOptionPane.ERROR_MESSAGE :                            JOptionPane.INFORMATION_MESSAGE);        JOptionPane.showMessageDialog(this, msg, "Printing", type);    }        private void error(String msg) {        message(true, msg);    }    public static void createAndShowGUI() {        JFrame f = new TextAreaPrintingDemo();        f.setLocationRelativeTo(null);        f.setVisible(true);    }        public static void main(String args[]) {        SwingUtilities.invokeLater(new Runnable() {            public void run() {                //Turn off metal's use of bold fonts                UIManager.put("swing.boldMetal", Boolean.FALSE);		createAndShowGUI();            }        });    }        // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JCheckBox backgroundCheck;    private javax.swing.JTextField footerField;    private javax.swing.JLabel footerLabel;    private javax.swing.JTextArea guideText;    private javax.swing.JTextField headerField;    private javax.swing.JLabel headerLabel;    private javax.swing.JCheckBox interactiveCheck;    private javax.swing.JScrollPane jScrollPane1;    private javax.swing.JButton printButton;    private javax.swing.JTextArea text;    // End of variables declaration//GEN-END:variables}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -