将选定的 JFrame 组件打印到打印机 [英] Printing selected Component of JFrame to Printer
本文介绍了将选定的 JFrame 组件打印到打印机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有 this 用 Java 开发的应用程序.
I have this Application Developed in Java.
我只想打印一些组件,例如客户名称"、表格"和日期".
I want to print only some Components, for example "Customer Name", "The Table" and the "Date".
我已经完成了这个例子 但我无法正确打印.
I have gone through this example but I am not able to print properly.
推荐答案
花几分钟阅读 如何使用表格/打印,本来可以让您生成类似于此示例的内容...
A few minutes spent reading How to use tables/printing, would have allowed you to produce something similar to this example...
打印输出...
屏幕输出...
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PrinterException;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerModel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
public class CopyTable {
public static void main(String[] args) {
new CopyTable();
}
public CopyTable() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private JTable table;
private JTextField customer;
private JSpinner date;
public TestPane() {
DefaultTableModel model = new DefaultTableModel();
for (int index = 0; index < 26; index++) {
model.addColumn((char) (index + 65));
}
for (int row = 0; row < 26; row++) {
Vector rowData = new Vector();
for (int col = 0; col < 26; col++) {
rowData.add(row + "x" + col);
}
model.addRow(rowData);
}
table = new JTable(model);
Calendar calendar = Calendar.getInstance();
Date initDate = calendar.getTime();
Date earliestDate = calendar.getTime();
calendar.add(Calendar.YEAR, 200);
Date latestDate = calendar.getTime();
SpinnerModel spinnerModel = new SpinnerDateModel(
initDate,
earliestDate,
latestDate,
Calendar.YEAR);
date = new JSpinner();
date.setModel(spinnerModel);
date.setEditor(new JSpinner.DateEditor(date, "dd/MM/yyyy"));
customer = new JTextField(10);
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
add(new JLabel("Customer:"), gbc);
gbc.gridy++;
add(new JLabel("Date:"), gbc);
gbc.gridy = 0;
gbc.gridx++;
gbc.weightx = 1;
gbc.anchor = GridBagConstraints.WEST;
add(customer, gbc);
gbc.gridy++;
add(date, gbc);
gbc.gridx = 0;
gbc.gridy++;
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.fill = GridBagConstraints.BOTH;
add(new JScrollPane(table), gbc);
gbc.gridx = 0;
gbc.fill = GridBagConstraints.NONE;
gbc.gridy++;
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.anchor = GridBagConstraints.CENTER;
JButton print = new JButton("Print");
add(print, gbc);
print.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MessageFormat header = new MessageFormat("Customer: " + customer.getText() + " | Date: " + new SimpleDateFormat("dd/MM/yyyy").format(date.getValue()));
try {
table.print(JTable.PrintMode.FIT_WIDTH, header, null, true, null, true);
} catch (PrinterException ex) {
ex.printStackTrace();
}
}
});
}
}
}
这篇关于将选定的 JFrame 组件打印到打印机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文