📄 orderprintframe.java
字号:
package stockinterface;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import print.*;
import java.awt.print.*;
import method.*;
public class OrderPrintFrame extends JFrame implements ActionListener {
JPanel contentPane;
//创建布局类
BorderLayout borderLayout1 = new BorderLayout();
FlowLayout flowLayout1 = new FlowLayout();
//创建滚动框控件
JScrollPane jScrollPane1 = new JScrollPane();
//创建编辑框控件
JTextField pageInfoTextField = new JTextField();
JTextField pageTextField = new JTextField();
//创建按钮面板
JPanel btnPanel = new JPanel();
//创建按钮
JButton goBtn = new JButton();
JButton priorBtn = new JButton();
JButton nextBtn = new JButton();
JButton printOnePageBtn = new JButton();
JButton printPagesBtn = new JButton();
JButton exitBtn = new JButton();
//创建字体类
Font dialog13 = new java.awt.Font("Dialog", 0, 13);
//创建打印平面
StockOrderPrintPane stockOrderPrintPane = new StockOrderPrintPane();
//创建打印类
PrinterJob job = PrinterJob.getPrinterJob();
//创建页面格式类
PageFormat pageFormat = new PageFormat();
//创建页面类
Paper paper = new Paper();
//创建进货单数组
String[] stockLedger = new String[13];
//创建进货单明细账数组
String[][] stockSubLedger = new String[0][5];
//创建总页面变量
int totalPage = 0;
//创建方法类
DataMethod dataMethod = new DataMethod();
public OrderPrintFrame() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(630, 700));
this.setTitle("进货单打印窗口");
//设置打印页面的的尺寸
paper.setSize(600, 850);
//设置打印范围
paper.setImageableArea(0, 0, 600, 850);
//加入pageFormat类中
pageFormat.setPaper(paper);
//设置打印面板的大小
stockOrderPrintPane.setPreferredSize(new Dimension(600, 850));
//设置编辑框控件的属性
pageInfoTextField.setEditable(false);
pageInfoTextField.setText("共0页");
pageInfoTextField.setPreferredSize(new Dimension(50, 22));
pageTextField.setPreferredSize(new Dimension(30, 22));
//设置按钮面板的布局
btnPanel.setLayout(flowLayout1);
//设置按钮的属性
priorBtn.setText("上一页");
priorBtn.setActionCommand("prior");
nextBtn.setText("下一页");
nextBtn.setActionCommand("next");
goBtn.setText("显示页面");
goBtn.setActionCommand("show");
printOnePageBtn.setText("打印当前页");
printOnePageBtn.setActionCommand("printOnePage");
printPagesBtn.setText("打印全部");
printPagesBtn.setActionCommand("printPages");
exitBtn.setText("退出");
exitBtn.setActionCommand("exit");
//设置滚动框的属性
jScrollPane1.getViewport().add(stockOrderPrintPane);
//为按钮面板加入控件
btnPanel.add(pageInfoTextField, null);
btnPanel.add(priorBtn, null);
btnPanel.add(nextBtn, null);
btnPanel.add(pageTextField, null);
btnPanel.add(goBtn, null);
btnPanel.add(printOnePageBtn, null);
btnPanel.add(printPagesBtn, null);
btnPanel.add(exitBtn, null);
//为窗口面板加入控件
contentPane.add(btnPanel, BorderLayout.NORTH);
contentPane.add(jScrollPane1, BorderLayout.CENTER);
//设置窗口类的字体和为按钮加入动作接收器
setupFontAndListener();
}
//设置窗口类的字体和为按钮加入动作接收器的方法
public void setupFontAndListener(){
Component[] components = btnPanel.getComponents();
//创建临时按钮控件
JButton tmpBtn = new JButton();
for(int i = 0; i < components.length; i++){
components[i].setFont(dialog13);
if(components[i].getClass().getName().equals("javax.swing.JButton")){
tmpBtn = (JButton)components[i];
tmpBtn.addActionListener(this);
}
}
}
protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
exit();
}
}
//退出方法
public void exit(){
//隐藏窗口
this.setVisible(false);
//清空编辑框的内容
pageInfoTextField.setText("共0页");
pageTextField.setText("");
}
//分拆页面的方法
public void splitPage(){
int length = stockSubLedger.length;
totalPage = 1;
//第一页最多只显示22条明细账记录
length -= 22;
//其它页最多显示38条明细账记录
int otherPages = (int)length/38;
totalPage += otherPages;
if((length % 38) > 0){
totalPage += 1;
}
pageInfoTextField.setText("共" + totalPage + "页");
//显示第1页的数据
if(totalPage > 0){
pageTextField.setText("1");
this.showOnePage();
}
}
//单击事件
public void actionPerformed(ActionEvent e) {
//取得按钮的动作字符串
String actionCommand = e.getActionCommand().trim();
//单击按钮的处理代码
if (actionCommand.equals("prior")) {
//显示上一页的方法
String inputPage = pageTextField.getText();
//检查是否整数
if(dataMethod.checkInt(inputPage) == 0){
JOptionPane.showMessageDialog(null,"页码必须是整数,请重新输入.");
return;
}
int page = Integer.parseInt(inputPage) ;
page--;
if(page == 0 ){
page = 1;
}
pageTextField.setText(String.valueOf(page));
this.showOnePage();
}else if(actionCommand.equals("next")){
//显示下一页的方法
String inputPage = pageTextField.getText();
//检查是否整数
if(dataMethod.checkInt(inputPage) == 0){
JOptionPane.showMessageDialog(null,"页码必须是整数,请重新输入.");
return;
}
int page = Integer.parseInt(inputPage) ;
page++;
if(page > totalPage ){
page = totalPage;
}
pageTextField.setText(String.valueOf(page));
this.showOnePage();
}else if(actionCommand.equals("show")){
//显示选择页面的方法
this.showOnePage();
}else if(actionCommand.equals("printOnePage")){
//打印选择页面的方法
this.printOnePage();
}else if(actionCommand.equals("printPages")){
//打印全部页面的方法
for (int iPage = 1; iPage <= totalPage; iPage++){
pageTextField.setText(String.valueOf(iPage));
this.printOnePage();
}
}else if(actionCommand.equals("exit")){
exit();
}
}
//显示当前页的方法
public void showOnePage() {
String inputPage = pageTextField.getText();
//检查是否整数
if(dataMethod.checkInt(inputPage) == 0){
JOptionPane.showMessageDialog(null,"页码必须是整数,请重新输入.");
return;
}
int page = Integer.parseInt(inputPage) ;
if((page > totalPage) || (page <= 0)){
JOptionPane.showMessageDialog(null,"页码输入有误,请重新输入.");
return;
}
//显示第一页的方法
if(page == 1){
stockOrderPrintPane.setIsFirstPage(true);
stockOrderPrintPane.setStockLedger(stockLedger);
if(totalPage == 1){
stockOrderPrintPane.setStockSubLedger(stockSubLedger);
}else{
String[][] tempStockSubLedger = new String[22][5];
System.arraycopy(stockSubLedger, 0, tempStockSubLedger, 0, 22);
stockOrderPrintPane.setStockSubLedger(tempStockSubLedger);
}
//显示其它页的方法
}else{
stockOrderPrintPane.setIsFirstPage(false);
String[][] tempStockSubLedger = null;
if(page == totalPage){
//取得最后一页剩余的记录数
int records = (stockSubLedger.length - 22) % 38;
tempStockSubLedger = new String[records][5];
//复制数组
System.arraycopy(stockSubLedger, 22 + (page - 2) * 38, tempStockSubLedger, 0, records);
stockOrderPrintPane.setStockSubLedger(tempStockSubLedger);
}else{
tempStockSubLedger = new String[38][5];
System.arraycopy(stockSubLedger, 22 + (page - 2) * 38, tempStockSubLedger, 0, 38);
stockOrderPrintPane.setStockSubLedger(tempStockSubLedger);
}
}
//设置页码
stockOrderPrintPane.setPrintPage(page);
//重新显示面板内容
stockOrderPrintPane.repaint();
}
//打印当前页的方法
public void printOnePage() {
//创建打印接口
StockOrderPrintable stockOrderPrintable = new StockOrderPrintable();
//显示当前页的内容
this.showOnePage();
//创建打印任务
Book book = new Book();
book.append(stockOrderPrintable, pageFormat);
// 设置打印机的Book
job.setPageable(book);
//打开打印窗口,询问是否进行打印
boolean doPrint = job.printDialog();
if (doPrint) {
try {
//执行打印命令
job.print();
}
catch (PrinterException ex) {
ex.printStackTrace();
}
}
}
//设置进货单数组的方法
public void setStockLedger(String[] stockLedger) {
this.stockLedger = stockLedger;
}
//设置进货单明细账的方法
public void setStockSubLedger(String[][] stockSubLedger) {
this.stockSubLedger = stockSubLedger;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -