📄 stockorderprintpane.java
字号:
package print;
import javax.swing.*;
import java.awt.*;
import java.awt.print.*;
import java.util.*;
public class StockOrderPrintPane extends JPanel{
final static Color fg = Color.black;
//创建字体
Font font16 = new Font("宋体", Font.BOLD, 16);
Font font11 = new Font("宋体", Font.PLAIN, 11);
//是否第1页变量
static boolean isFirstPage = true;
//创建进货单数组
static String[] stockLedger = {"", "", "", "", "", "", "", "", "", "", "", "0", ""};
//创建进货单明细账数组
static String[][] stockSubLedger = new String[0][5];
/*测试数组
//创建进货单数组
static String[] stockLedger = {"20040500001", "", "供应商1", "jack", "ame", "ame",
"jack", "收货地址1", "仓库1", "2004-5-6 16:32:00.0", "2004-5-6 16:32:00.0", "0", "备注"};
//创建进货单明细账数组
static String[][] stockSubLedger = {{"1234567891234567", "25.5", "25", "125623.85", "2004-12-12"},
{"2234567891234567", "33.5", "25", "125623.85", "2004-12-12"},
{"3234567891234567", "75.5", "25", "125623.85", "2004-12-12"},
{"4234567891234567", "29.5", "25", "125623.85", "2004-12-12"},
{"5234567891234567", "63.5", "25", "125623.85", "2004-12-12"},
};
*/
//创建页码变量
static int printPage = 0;
//页面左边的空白
int pageLeftMargin = 88;
//与左边的距离
int x = 0;
//与项部的距离
int y = 0;
//行宽
int lineHeight = 14;
//行间距
int lineDistant = 14;
//表格的行高
int tableLineHeight = 17;
//表格的总高度
int tableHeight = 0;
//创建完成状态数组
String[] onProcesses = {"进行", "撤消", "完成"};
//重新绘画
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
//设置画笔颜色
g2.setPaint(fg);
drawPages(g2);
}
public StockOrderPrintPane() {
this.setBackground(Color.white);
}
/** 打印页面的方法 */
public void drawPages(Graphics2D g2){
if(isFirstPage){
drawFirstPage(g2);
}else{
drawOtherPages(g2);
}
}
/** 打印第1页的方法 */
public void drawFirstPage(Graphics2D g2){
//取得表格的高度
tableHeight = tableLineHeight * (stockSubLedger.length + 1);
//设置字体
g2.setFont(font16);
//显示进货单
g2.drawString("进货单", 273, 80);
/*显示第1行的内容*/
g2.setFont(font11);
x = pageLeftMargin;
//第一行与顶部的距离
y = 114;
//显示第1列内容
g2.drawString("单据编号:", x, y);
x += 51;
//显示第2列内容
g2.drawString(stockLedger[0], x, y);
x += 80;
//显示第3列内容
g2.drawString("供应商:", x, y);
x += 51;
//显示第4列内容
g2.drawString(stockLedger[2], x, y);
/*显示第2行的内容*/
x = pageLeftMargin;
y += lineHeight + lineDistant;
//显示第1列内容
g2.drawString("请购员:", x, y);
x += 51;
//显示第2列内容
g2.drawString(stockLedger[3], x, y);
x += 80;
//显示第3列内容
g2.drawString("订购员:", x, y);
x += 51;
//显示第4列内容
g2.drawString(stockLedger[4], x, y);
x += 51;
//显示第5列内容
g2.drawString("验收员:", x, y);
x += 43;
//显示第6列内容
g2.drawString(stockLedger[5], x, y);
x += 51;
//显示第7列内容
g2.drawString("现金管理员:", x, y);
x += 63;
//显示第8列内容
g2.drawString(stockLedger[6], x, y);
/*显示第3行的内容*/
x = pageLeftMargin;
y += lineHeight + lineDistant;
//显示第1列内容
g2.drawString("收货地址:", x, y);
x += 51;
//显示第2列内容
g2.drawString(stockLedger[7], x, y);
/*显示第4行的内容*/
x = pageLeftMargin;
y += lineHeight + lineDistant;
//显示第1列内容
g2.drawString("仓库名字:", x, y);
x += 51;
//显示第2列内容
g2.drawString(stockLedger[8], x, y);
/*显示第5行的内容*/
x = pageLeftMargin;
y += lineHeight + lineDistant;
//显示第1列内容
g2.drawString("订单日期:", x, y);
x += 51;
//显示第2列内容
g2.drawString(stockLedger[9], x, y);
x += 80 + 51;
//显示第3列内容
g2.drawString("到货日期:", x, y);
x += 51;
//显示第4列内容
g2.drawString(stockLedger[10], x, y);
/*显示第6行的内容*/
x = pageLeftMargin;
y += lineHeight + lineDistant;
//显示第1列内容
g2.drawString("完成状态:", x, y);
x += 51;
//显示第2列内容
g2.drawString(onProcesses[Integer.parseInt(stockLedger[11])] , x, y);
/*显示第7行的内容*/
x = pageLeftMargin;
y += lineHeight + lineDistant;
//显示第1列内容
g2.drawString("备注:", x, y);
/*显示第8行的内容*/
x = pageLeftMargin + 22;
y += lineHeight + lineDistant;
//显示第1列内容
g2.drawString(stockLedger[12], x, y);
/*显示进货单明细账字符串*/
x = pageLeftMargin;
y += 48;
//显示第1列内容
g2.drawString("进货单明细账:", x, y);
/*显示表格的第一行的线*/
x = pageLeftMargin;
y += lineDistant;
//画表格的横线
g2.drawLine(x, y, x + 440, y);
//画表格的第1条竖线
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第2条竖线(商品条形码列)
x += 123;
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第3条竖线(进货价列)
x += 83;
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第4条竖线(数量列)
x += 68;
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第5条竖线(金额列)
x += 83;
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第6条竖线(有效期列)
x += 83;
g2.drawLine(x, y, x, y + tableHeight);
/*显示表格的标题*/
x = pageLeftMargin;
y += tableLineHeight;
//画表格的横线
g2.drawLine(x, y, x + 440, y);
x += 35;
//显示第1列内容
g2.drawString("商品条形码", x, y - 4);
x += 115;
//显示第2列内容
g2.drawString("进货价", x, y - 4);
x += 80;
//显示第3列内容
g2.drawString("数量", x, y - 4);
x += 75;
//显示第4列内容
g2.drawString("金额", x, y - 4);
x += 75;
//显示第5列内容
g2.drawString("有效期", x, y - 4);
/*显示表格的内容*/
for(int i = 0; i < stockSubLedger.length; i++){
x = pageLeftMargin;
y += tableLineHeight;
//画表格的横线
g2.drawLine(x, y, x + 440, y);
x += 5;
//显示第1列内容
g2.drawString(stockSubLedger[i][0], x, y - 4);
x += 125;
//显示第2列内容
g2.drawString(stockSubLedger[i][1], x, y - 4);
x += 80;
//显示第3列内容
g2.drawString(stockSubLedger[i][2], x, y - 4);
x += 70;
//显示第4列内容
g2.drawString(stockSubLedger[i][3], x, y - 4);
x += 80;
//显示第5列内容
g2.drawString(stockSubLedger[i][4], x, y - 4);
}
/*显示页尾的内容*/
x = 279;
y = 789;
//显示页码
g2.drawString("第 1 页", x, y);
}
/** 打印其它页面的方法 */
public void drawOtherPages(Graphics2D g2){
//设置字体
g2.setFont(font11);
//取得表格的高度
tableHeight = tableLineHeight * (stockSubLedger.length + 1);
/*显示进货单明细账字符串*/
x = pageLeftMargin;
y = 75;
//显示第1列内容
g2.drawString("进货单明细账(接上页):", x, y);
/*显示表格的第一行的线*/
x = pageLeftMargin;
y += lineDistant;
//画表格的横线
g2.drawLine(x, y, x + 440, y);
//画表格的第1条竖线
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第2条竖线(商品条形码列)
x += 123;
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第3条竖线(进货价列)
x += 83;
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第4条竖线(数量列)
x += 68;
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第5条竖线(金额列)
x += 83;
g2.drawLine(x, y, x, y + tableHeight);
//画表格的第6条竖线(有效期列)
x += 83;
g2.drawLine(x, y, x, y + tableHeight);
/*显示表格的标题*/
x = pageLeftMargin;
y += tableLineHeight;
//画表格的横线
g2.drawLine(x, y, x + 440, y);
x += 35;
//显示第1列内容
g2.drawString("商品条形码", x, y - 4);
x += 115;
//显示第2列内容
g2.drawString("进货价", x, y - 4);
x += 80;
//显示第3列内容
g2.drawString("数量", x, y - 4);
x += 75;
//显示第4列内容
g2.drawString("金额", x, y - 4);
x += 75;
//显示第5列内容
g2.drawString("有效期", x, y - 4);
/*显示表格的内容*/
for (int i = 0; i < stockSubLedger.length; i++) {
x = pageLeftMargin;
y += tableLineHeight;
//画表格的横线
g2.drawLine(x, y, x + 440, y);
x += 5;
//显示第1列内容
g2.drawString(stockSubLedger[i][0], x, y - 4);
x += 125;
//显示第2列内容
g2.drawString(stockSubLedger[i][1], x, y - 4);
x += 80;
//显示第3列内容
g2.drawString(stockSubLedger[i][2], x, y - 4);
x += 70;
//显示第4列内容
g2.drawString(stockSubLedger[i][3], x, y - 4);
x += 80;
//显示第5列内容
g2.drawString(stockSubLedger[i][4], x, y - 4);
}
/*显示页尾的内容*/
x = 279;
y = 789;
g2.drawString("第 " + printPage + " 页", x, y);
}
public boolean isIsFirstPage() {
return isFirstPage;
}
public void setIsFirstPage(boolean isFirstPage) {
this.isFirstPage = isFirstPage;
}
public String[] getStockLedger() {
return stockLedger;
}
public void setStockLedger(String[] stockLedger) {
this.stockLedger = stockLedger;
}
public String[][] getStockSubLedger() {
return stockSubLedger;
}
public void setStockSubLedger(String[][] stockSubLedger) {
this.stockSubLedger = stockSubLedger;
}
public int getPrintPage() {
return printPage;
}
public void setPrintPage(int pirntPage) {
this.printPage = pirntPage;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -