?? tableprintdemo1.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;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>images/passed.png * <li>images/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 + -