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

📄 tableprintdemo1.java

📁 java tutorial.sun公司官方出品。java入门书籍。最新版
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * 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;import javax.swing.*;import javax.swing.table.*;import javax.swing.event.*;import javax.swing.border.*;import java.awt.*;import java.awt.event.*;import java.awt.print.PrinterException;import java.text.MessageFormat;/** * Demo of the basic features of {@code JTable} printing. * Allows the user to configure a couple of options and print * a table of student grades. * <p> * Requires the following other files: * <ul> *     <li>passed.png *     <li>failed.png * </ul> * * @author Shannon Hickey */public class TablePrintDemo1 extends JFrame {    /* Check mark and x mark items to render the "Passed" column */    private static final ImageIcon passedIcon        = new ImageIcon(TablePrintDemo1.class.getResource("images/passed.png"));    private static final ImageIcon failedIcon        = new ImageIcon(TablePrintDemo1.class.getResource("images/failed.png"));    /* UI Components */    private JPanel contentPane;    private JLabel gradesLabel;    private JTable gradesTable;    private JScrollPane scroll;    private JCheckBox showPrintDialogBox;    private JCheckBox interactiveBox;    private JCheckBox fitWidthBox;    private JButton printButton;    /* Protected so that they can be modified/disabled by subclasses */    protected JCheckBox headerBox;    protected JCheckBox footerBox;    protected JTextField headerField;    protected JTextField footerField;    /**     * Constructs an instance of the demo.     */    public TablePrintDemo1() {        super("Table Printing Demo 1");        gradesLabel = new JLabel("Final Grades - CSC 101");        gradesLabel.setFont(new Font("Dialog", Font.BOLD, 16));        gradesTable = createTable(new GradesModel());        gradesTable.setFillsViewportHeight(true);        gradesTable.setRowHeight(24);        /* Set a custom renderer on the "Passed" column */        gradesTable.getColumn("Passed").setCellRenderer(createPassedColumnRenderer());        scroll = new JScrollPane(gradesTable);        String tooltipText;        tooltipText = "Include a page header";        headerBox = new JCheckBox("Header:", true);        headerBox.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                headerField.setEnabled(headerBox.isSelected());            }        });        headerBox.setToolTipText(tooltipText);        tooltipText = "Page Header (Use {0} to include page number)";        headerField = new JTextField("Final Grades - CSC 101");        headerField.setToolTipText(tooltipText);        tooltipText = "Include a page footer";        footerBox = new JCheckBox("Footer:", true);        footerBox.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                footerField.setEnabled(footerBox.isSelected());            }        });        footerBox.setToolTipText(tooltipText);        tooltipText = "Page Footer (Use {0} to Include Page Number)";        footerField = new JTextField("Page {0}");        footerField.setToolTipText(tooltipText);        tooltipText = "Show the Print Dialog Before Printing";        showPrintDialogBox = new JCheckBox("Show print dialog", true);        showPrintDialogBox.setToolTipText(tooltipText);        showPrintDialogBox.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                if (!showPrintDialogBox.isSelected()) {                    JOptionPane.showMessageDialog(                        TablePrintDemo1.this,                        "If the Print Dialog is not shown,"                            + " the default printer is used.",                        "Printing Message",                        JOptionPane.INFORMATION_MESSAGE);                }            }        });                        tooltipText = "Keep the GUI Responsive and Show a Status Dialog During Printing";        interactiveBox = new JCheckBox("Interactive (Show status dialog)", true);        interactiveBox.setToolTipText(tooltipText);        interactiveBox.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                if (!interactiveBox.isSelected()) {                    JOptionPane.showMessageDialog(                        TablePrintDemo1.this,                        "If non-interactive, the GUI is fully blocked"                            + " during printing.",                        "Printing Message",                        JOptionPane.INFORMATION_MESSAGE);                }            }        });        tooltipText = "Shrink the Table to Fit the Entire Width on a Page";        fitWidthBox = new JCheckBox("Fit width to printed page", true);        fitWidthBox.setToolTipText(tooltipText);        tooltipText = "Print the Table";        printButton = new JButton("Print");        printButton.setToolTipText(tooltipText);                printButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                printGradesTable();            }        });        contentPane = new JPanel();        addComponentsToContentPane();        setContentPane(contentPane);        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setSize(700, 600);        setLocationRelativeTo(null);    }    /**     * Adds to and lays out all GUI components on the {@code contentPane} panel.     * <p>     * It is recommended that you <b>NOT</b> try to understand this code. It was     * automatically generated by the NetBeans GUI builder.     *      */    private void addComponentsToContentPane() {        JPanel bottomPanel = new JPanel();        bottomPanel.setBorder(BorderFactory.createTitledBorder("Printing"));        GroupLayout bottomPanelLayout = new GroupLayout(bottomPanel);        bottomPanel.setLayout(bottomPanelLayout);        bottomPanelLayout.setHorizontalGroup(            bottomPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)            .addGroup(bottomPanelLayout.createSequentialGroup()                .addContainerGap()                .addGroup(bottomPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)                    .addComponent(headerBox)                    .addComponent(footerBox))                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)                .addGroup(bottomPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)                    .addComponent(footerField)                    .addComponent(headerField, GroupLayout.DEFAULT_SIZE, 180, Short.MAX_VALUE))                .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)                .addGroup(bottomPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)                    .addGroup(bottomPanelLayout.createSequentialGroup()                        .addComponent(fitWidthBox)                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)                        .addComponent(printButton))                    .addGroup(bottomPanelLayout.createSequentialGroup()                        .addComponent(showPrintDialogBox)                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)                        .addComponent(interactiveBox)))                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))        );        bottomPanelLayout.setVerticalGroup(            bottomPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)            .addGroup(bottomPanelLayout.createSequentialGroup()                .addGroup(bottomPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)                    .addComponent(headerBox)                    .addComponent(headerField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)                    .addComponent(interactiveBox)                    .addComponent(showPrintDialogBox))                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)                .addGroup(bottomPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)                    .addComponent(footerBox)                    .addComponent(footerField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)                    .addComponent(fitWidthBox)                    .addComponent(printButton))                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))        );        GroupLayout layout = new GroupLayout(contentPane);        contentPane.setLayout(layout);        layout.setHorizontalGroup(            layout.createParallelGroup(GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)                    .addComponent(scroll, GroupLayout.DEFAULT_SIZE, 486, Short.MAX_VALUE)                    .addComponent(gradesLabel)                    .addComponent(bottomPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))                .addContainerGap())        );        layout.setVerticalGroup(            layout.createParallelGroup(GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addComponent(gradesLabel)                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)                .addComponent(scroll, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)                .addComponent(bottomPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)                .addContainerGap())        );    }    /**     * Create and return a table for the given model.

⌨️ 快捷键说明

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