導航:首頁 > 編程語言 > java列印控制項

java列印控制項

發布時間:2023-01-31 00:40:57

java代碼的列印信息控制項怎麼做或者有現成的代碼也行。

一: 首先理清業務邏輯

兩個窗口, 第一個主窗口, 是用於填寫信息的, 點擊按鈕後,跳轉到第二個窗口,.

第二個對話框窗口 ,用於顯示需要列印的信息, 以及列印到文檔


二: 確定需要的技術, java圖像界面主要使用awt和swing

swing裡面的控制項比較豐富, 且功能強大 .


三: 效果圖片

importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
//定義一個主窗口類
{
publicstaticfinalStringFILE_PATH="c:\print.txt";//常量,用於指定信息的保存路徑
//定義主要的組件
privatefinalJTextFieldjtf1,jtf2,jtf3;
privatefinalJCheckBoxjcb1,jcb2,jcb3;
privatefinalJRadioButtonjrb1,jrb2;

publicMainFrame(){
setTitle("信息提交窗口");//設置窗口標題
setSize(350,320);//設置窗口大小
setLocationRelativeTo(null);//讓窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//當主窗口關閉的時候退出jvm虛擬機
JPaneljp=newJPanel(newGridLayout(5,1,2,1));//定義主顯示面板,布局為表格布局5行1列,水平間距2,垂直間距1

JPaneljp1=newJPanel();//第一行的組件面板
JLabeljl1=newJLabel("姓名");
jtf1=newJTextField(10);
jp1.add(jl1);
jp1.add(jtf1);

JPaneljp2=newJPanel();//第二行的組件面板
JLabeljl2=newJLabel("學號");
jtf2=newJTextField(10);
jp2.add(jl2);
jp2.add(jtf2);

JPaneljp3=newJPanel();//第三行的組件面板
JLabeljl3=newJLabel("性別");
jrb1=newJRadioButton("男");
jrb2=newJRadioButton("女");
jrb1.setSelected(true);
ButtonGroupbgs=newButtonGroup();
bgs.add(jrb1);
bgs.add(jrb2);
jp3.add(jl3);
jp3.add(jrb1);
jp3.add(jrb2);

JPaneljp4=newJPanel();//第四行的組件面板
JLabeljl4=newJLabel("選擇愛好");
jcb1=newJCheckBox("游泳");
jcb2=newJCheckBox("籃球");
jcb3=newJCheckBox("跑步");
jp4.add(jl4);
jp4.add(jcb1);
jp4.add(jcb2);
jp4.add(jcb3);

JPaneljp5=newJPanel();//第五行的組件面板
JLabeljl5=newJLabel("自我介紹");
jtf3=newJTextField(22);
jp5.add(jl5);
jp5.add(jtf3);

//添加到主顯示面板
jp.add(jp1);
jp.add(jp2);
jp.add(jp3);
jp.add(jp4);
jp.add(jp5);
jp.setBorder(BorderFactory.createTitledBorder("填寫資料"));//設置主顯示面板的邊框

JButtonjb=newJButton("跳轉到列印頁");
jb.addActionListener(newActionListener(){//按鈕事件

publicvoidactionPerformed(ActionEvente){//獲取組件的信息
StringBuildersb=newStringBuilder();//用於連接信息
Stringname=jtf1.getText();
sb.append("姓名:"+name+" ");
Stringnum=jtf2.getText();
sb.append("學號:"+num+" ");
Stringsex;
if(jrb1.isSelected()){
sex="男";
}else{
sex="女";
}
sb.append("性別:"+sex+" ");
Stringaihao="";
if(jcb1.isSelected()){
aihao+=jcb1.getText();
}
if(jcb2.isSelected()){
aihao+=""+jcb2.getText();
}
if(jcb3.isSelected()){
aihao+=""+jcb3.getText();
}
sb.append("愛好:"+aihao+" ");
Stringjieshao=jtf3.getText();
sb.append("自我介紹:"+jieshao+" ");
newPrintDailog(sb.toString(),FILE_PATH).setVisible(true);//打開列印頁面,並設置為可見
}
});

getContentPane().add(newJLabel("信息填寫",JLabel.CENTER),BorderLayout.NORTH);
getContentPane().add(jp);
getContentPane().add(jb,BorderLayout.SOUTH);
}

publicstaticvoidmain(String[]args){
newMainFrame().setVisible(true);
}
}

//定義一個對話框窗口類
{
Stringinfo;//用於接受信息
StringfilePath;//文檔的路徑
privatefinalJLabeljl2;
publicPrintDailog(Stringinfo,finalStringfilePath){
this.info=info;
this.filePath=filePath;
setModal(true);//模態為真,如果不關閉這個對話框,那麼無法點擊其他窗口
setTitle("信息列印頁");//設置列印窗口的標題
setSize(300,320);//設置列印窗口的大小
setLocationRelativeTo(null);//設置列印窗口居中
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);//當點擊關閉按鈕時,該窗口銷毀
JLabeljl1=newJLabel("信息列印顯示",JLabel.CENTER);
JTextAreajta=newJTextArea(info);
jta.setEditable(false);//不可編輯
jta.setLineWrap(true);//自動換行
JScrollPanejsp=newJScrollPane(jta);
jsp.setBorder(BorderFactory.createTitledBorder("信息"));

JButtonjb1=newJButton("列印");
JPaneljp=newJPanel(newGridLayout(2,1));
JPaneljp1=newJPanel();
jp1.add(jb1);

JPaneljp2=newJPanel();
jl2=newJLabel();
jp2.add(jl2);

jp.add(jp1);
jp.add(jp2);
add(jl1,BorderLayout.NORTH);
add(jsp);
add(jp,BorderLayout.SOUTH);

jb1.addActionListener(newActionListener(){//點擊列印的按鈕的事件
publicvoidactionPerformed(ActionEvente){
saveToFile();//信息列印到了文檔
jl2.setText("信息已經列印到"+filePath);//顯示出來
jl2.setForeground(Color.RED);//為了醒目設置顏色為紅色
}
});

}

privatevoidsaveToFile(){//該方法用於保存信息到文檔
try{
BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(filePath),"UTF-8"));
bw.write(info);
bw.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}


五: 拓展

java 製作圖像界面比較簡單, 只需要熟練的掌握三大布局(流布局 表格布局 邊界布局)和常用組件 , 就能製作出比較復雜的界面 . 所以理清業務邏輯, 才是重點

⑵ 如何在java web項目中實現列印功能,比如一

你可以了解下jatoolsprint 目前所遇到的列印問題都可以解決。
不過要裝一個控制項。大小60K.
這是他們網上的介紹。你可以了解下。

jatoolsPrinter (傑表.列印控制項)是一款實現網頁套打的專用工具。作為web應用開發者,我們經常會遇到在瀏覽器中列印報表、票據的需求,這些需求瀏覽器本身的列印功能一般不能滿足, 如精確分頁,套打等。這就需要有一種能解決常見的瀏覽器端列印問題的軟體工具,這也是 jatoolsPrinter 的研發背景。

jatoolsPrinter 的特點是可以直接對web頁面進行精確的分頁列印。jatoolsPrinter 通過在網頁中嵌入控制項,解決了web客戶端精確列印,批量列印,列印配置自動保留等問題。 具體功能有:

支持設置列印參數,指定輸出列印機、紙張類型,列印方向(橫、豎)等 。
支持html格式的頁腳、頁眉設置,也就是說,頁腳頁眉可設置圖片等,如公司logo。
支持程序分頁與自動分頁。
支持列印參數自動保留,待下一次列印同一票據時,自動設置,這使客戶端也可以控制列印參數。
支持列印預覽,支持預覽時指定頁、指定份數列印。
支持直接列印指定票據的URL。
支持票據及其附件的批量列印。
支持取得本機中的可用列印機,可用紙張類型列表,幫您設計出更友好的參數設置界面。
支持回調,可以幫助您在列印後自動處理有關事務,比如列印後自動關閉窗口、自動遞交表單數據等。
支持票據套打時,底圖僅在列印預覽時顯示,不輸出到列印機。
小巧,整個控制項只有60K。不需要額外的軟體包支持。
與您項目採用的技術標准無關,J2EE、.NET 項目均可。
IE 5.5+ 中適用。

⑶ java(web)列印 通常是怎麼實現的

Web系統中,列印功能一直是個老大難問題,因此產生了很多第三方的控制項,多數要收費,而且跟自己的系統結合有一定的麻煩。系統採用J2EE技術,jsp列印問題同樣存在於OA中。

列印方式有三種:一是不經過任何修改,直接調用javascript中的window.print()列印。二根據客戶要求的報表格式,編寫相應格式的html,裝載數據列印,同樣調用window.print()列印,只是對html的格式要求比較高。三是通過客戶提供的word格式,通過xml配置文件與資料庫的數據進行關聯,自動裝載數據到word中列印,這里是利用客戶端的word進行列印。

第一種幾乎不用編寫程序,最簡單快捷,這里會遇到幾個問題,只能列印表單內容,按鈕不希望列印出來;頁眉頁腳不想列印出來;IE的titile不想列印出來。
解決辦法:把button放在一個table或者div里,列印的時候隱藏,完成後顯示就可以。系統中的javascript列印代碼如下:
function Print() {
var tit = document.title;
document.title = "";
table1.style.display = "none";
window.print();
document.title = tit;
table1.style.display = "";
}
不過只能起到列印的目的,列印的效果一般比較土。不管怎麼說,可以最快的讓系統的大部分模塊都有列印的功能。

第二種方式必須根據每個報表的格式進行定製html和java程序開發,會花比較多的時間。要注意的是對html中table的樣式控制,在IE中瀏覽看起來很細的邊框,列印出來有些線條會比較粗,有些線條又會比較細,陰陽怪氣的很難看。
在table中直接用bordercolor會讓線條顯得很粗,用bordercolorlight,bordercolordark配合使用可以顯示出秀氣的線條。
<html>
<head></head>
<body>
<table border="1" bordercolorlight="red" bordercolordark="#FFFFFF" cellpadding="3" cellspacing="0">
<tbody>
<tr>
<td>姓名</td>
<td>所屬部門</td>
</tr>
<tr>
<td>陳</td>
<td>技術部</td>
</tr>
</tbody>
</table>
</body>
</html>
比如以上代碼,在IE中看起來線條一樣大小,還是比較秀氣。不要高興的太早,列印出來的效果不象在IE中看到的那樣,邊框雖細,內線卻很粗!原因是每個td都有邊框,td與td的交接處就會有線條重疊,雖然IE看起來沒有,可是列印的時候就會顯示出來。
這個問題的解決辦法是控制每一個td的樣式,對重疊的地方進行border-bottom:1px之類的控制。
這個方案比較消耗精力,而且列印的時候很難控制分頁,更不能隨時按照客戶的需要調整字體邊框顏色等。

第三種方案:從伺服器端生成word、excel等文檔,發送到瀏覽器進行列印
實現過程:先將需要列印的數據導入到word或者excel中,再利用word或者excel的列印功能來實現web列印。
下面以excel為例實現如何列印的過程
將網頁中數據導入excel中的方法有很多,這里先介紹一種,利用ActiveX控制項的方式,即 Excel.Application, 這個控制項是MS為excel提供的編程介面,在很多種編程語言種都可以通過該介面來操縱excel表格。
下面用javascript腳本來實現一個簡單的例子。
<script language = "javascript">
function ExcelPrint() {
var excelApp; //存放Excel對象
var excelBook; //存放Excel工件簿文件
var excelSheet; //存放Excel活動工作表
try {
excelApp = new ActiveXObject("Excel. Application"); //創建Excel對象}
catch(e) {
alert("請啟用ActiveX控制項設置!");
return;
}
excelBook = excelApp.Workbooks.Add(); //創建Excel工作簿文件
excelSheet = excelBook.ActiveSheet; //激活Excel工作表
var rowLen = printTable.rows.length; //table對象的行數
for (var i = 0; i < rowLen; i++) {
var colLen = printTable.rows(i).cells.length; //table對象的列數
for (var j = 0; j < colLen; j++) //為Excel表的單元格賦值
excelSheet.Cells(i + 1, j + 1).value = printTable.rows(i).cells(j).innerText;
} //將表格中的每個單元格的innerText導入到excel的單元格中
excelApp.Visible = true; //設置Excel對象可見
excelSheet.PrintOut(); //列印工作表
excelBook.Close(true); //關閉文檔
excelApp.Quit(); //結束excel對象
excelApp = null; //釋放excel對象
}
}

</script>
注意:
運行該程序的前提是 IE要允許對沒有標記為安全的Activex控制項進行初始化和腳本運行。設置方法如下:
打開控制面板→Internet選項→安全性→自定義級別→對沒有標記為安全的ActiveX控制項進行初始化和腳本運行→選中啟用,這樣我們的程序就可以運行了。如果沒有啟用該ActiveX控制項設置,那麼程序在執行創建Excel對象時會拋出一個異常,這時可以通過catch()語句來捕獲這個異常,並且做出相應的處理。
運行該程序必須客戶端安裝了MS EXCEL,否則Activex驅動不了。

閱讀全文

與java列印控制項相關的資料

熱點內容
有伺服器地址怎麼安裝軟體 瀏覽:659
安卓如何完全清除數據 瀏覽:690
安卓安卓證書怎麼信任 瀏覽:53
伺服器被攻擊如何解決 瀏覽:221
學霸變成程序員 瀏覽:881
c語言編譯錯誤fatalerror 瀏覽:441
ipv4內部伺服器地址怎麼分配 瀏覽:463
java線程安全的方法 瀏覽:950
重復命令畫梯形 瀏覽:164
在疫情就是命令 瀏覽:328
自己搭建一個什麼伺服器好玩 瀏覽:253
java基礎馬士兵 瀏覽:823
完美世界手游如何查看伺服器 瀏覽:859
光遇安卓與ios什麼時候互通 瀏覽:598
js如何運行時編譯 瀏覽:917
引力app在哪裡下載 瀏覽:609
編寫app如何得到錢 瀏覽:801
吉利汽車軟體放哪個文件夾安裝 瀏覽:223
多文件編譯c 瀏覽:543
頭頂加密後為什麼反而更稀疏 瀏覽:794