1. java直接打印集合
如果这个栈是你自己写的,那你自己知道每一个元素,就可以一个个按你想要的顺序打印。如果这个栈的类是别人写的,别人之提供给你push,pop方法,那么估计也只有全部pop出来这种方法了 ================================================================== 哦,你的意思是栈虽然是你自己写的,但是你用的时候却需要反过来遍历,而不是说在栈的内部做这个遍历?那么在外部的话我觉得是没有好办法的,因为栈只有那两个操作,除非像java的Stack那样,还提供了整个线性表的功能。但是如果是你需要反过来遍历的话,我觉得这就不适合用栈这种数据结构啊 ================================================================= 用什么数据结构要看你什么需求,比如你做的事情的确是栈的概念,你也的确只需要出栈,进栈的操作的话,那么你只需要栈就可以了。你现在要遍历整个集合,那就用最普通的顺序表好了
2. java批量打印文件
采用报表打印插件是最好的方式。报表插件优势:报表插件在服务器端不驻留程序,服务器只要提供约定格式的 XML 数据就行了。所以有如下优势:
1、支持所有的WEB服务器平台。
2、报表的生成是在各自客户端电脑上,这样大大减轻了服务器的负载压力,能够做到更大的并发访问。
3、插件在客户端运行是电脑原生程序,与桌面程序具有一样的运行性能,并能开发出桌面程序类似的报表功能。
4、能驱动打印机直接进行打印,是WEB软件实现打印功能的最好方式。
3. java调用打印机打印文件
先打印张测试纸,如果可以,说明打印机没有问题。
如果打印机没问题,那就把JAVA软件重新安装下试试。
4. JAVA打印输出
使用了如下方法获得异常所在的文件,行号和方法:
StackTraceElement stackTraceElement= ex.getStackTrace()[0];// 得到异常棧的首个元素
System.out.println("File="+stackTraceElement.getFileName());// 打印文件名
System.out.println("Line="+stackTraceElement.getLineNumber());// 打印出错行号
System.out.println("Method="+stackTraceElement.getMethodName());// 打印出错方法
程序如下:
public class ExceptionTest{
public static void main(String[] arg) {
try{
throw new Exception("Exception Test!");
}
catch(Exception ex){
ex.printStackTrace();
String strTemp=ex.getStackTrace().toString();
StackTraceElement stackTraceElement= ex.getStackTrace()[0];
System.out.println("File="+stackTraceElement.getFileName());
System.out.println("Line="+stackTraceElement.getLineNumber());
System.out.println("Method="+stackTraceElement.getMethodName());
}
}
}
输出如下(在Eclipse3.1中):
java.lang.Exception: Exception Test!
at ExceptionTest.main(ExceptionTest.java:5)
File=ExceptionTest.java
Line=5
Method=main
大家可以看到,输出基本可以满足需求,但是没有ex.printStackTrace();产生的链接效果,如点击ExceptionTest.java:5 就可以到达错误处,这里不知道如何处理,那位知道请告知.
然而,上述方法不能应付类反射出现的异常,请大家看如下程序:
public void fetchCommand(String strCmmd){
cmmdArgs=strCmmd.split("/s+");
String className="Command"+cmmdArgs[0];
try{
Class cls=Class.forName(className);
cmmd=(Command)cls.newInstance();
}
catch(Exception ex){
ex.printStackTrace();
//System.out.println(ex.getStackTrace()[0].getLineNumber());///getFileName() ;
StackTraceElement stackTraceElement= ex.getStackTrace()[0];
System.out.println("File="+stackTraceElement.getFileName());
System.out.println("Line="+stackTraceElement.getLineNumber());
System.out.println("Method="+stackTraceElement.getMethodName());
}
}
当className不是可识别的类名时,输出如下:
commandType01 start!
commandType01 Length=3
commandType01 End!
commandType02 start!
commandType02 is: Type02 1 2 3 4
commandType02 End!
File=null // 这里找不到文件
Line=-1 // 行出错
Method=run // 方法错
commandType02 start!
commandType02 is: Type04 USA Russia China
commandType02 End!
java.lang.ClassNotFoundException: CommandType04
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at Mediation.fetchCommand(Mediation.java:16) // 这里倒是对了
at Inlet.main(Inlet.java:11)// 这里也对
看来StackTraceElement stackTraceElement= ex.getStackTrace()[0];还要继续挖掘.
经跟踪发现,现在用这个办法可以完全搞定:
StackTraceElement stackTraceElement= ex.getStackTrace()[ex.getStackTrace().length-1];
System.out.println("File="+stackTraceElement.getFileName());
System.out.println("Line="+stackTraceElement.getLineNumber());
System.out.println("Method="+stackTraceElement.getMethodName());
这里的变化是将ex.getStackTrace()[0]修改成了ex.getStackTrace()[ex.getStackTrace().length-1],因为只有数组的最后一个元素才有我想要的信息,原先的ex.getStackTrace()[0]只是恰巧数组的最后一个元素就是首个元素而已.
5. java获取打印机列表
参考javax.print.*
大致过程是这样的:
写一个servlet,专门实现打印服务
这个servlet内是这样处理的:
1.获取打印机对象printer
通过枚举PrintServiceprintservices[]=PrintServiceLookup.lookupPrintServices(...)
2.生成DocPrintJobjob=PrintService.createPrintJob();
3.生成文档Docdoc=newSimpleDoc(...);
需要3个参数
第一个是打印的数据,可以根据条码,生成一幅图像,然把图像作为输入流,作为第一个参数
第二个参数用一个DocFlavor.INPUT_STREAM对象
DocFlavor类有相应的静态变量,你根据图像的mime类型选择
第三个参数是一个DocAttributeSet对象
4.打印
job.print(doc,pras);
这是我以前写的练习:
-----------------------------------------------------------------------
packageprinttest;
importjava.io.*;
importjavax.print.*;
importjava.awt.*;
importjava.awt.image.*;
importjavax.imageio.*;
publicclassApplication1
{
publicstaticvoidtest(Stringcode)
{
try{
DocFlavorflavor=DocFlavor.INPUT_STREAM.JPEG;
//getaprinter
PrintService[]printers=PrintServiceLookup.lookupPrintServices(flavor,null);
for(inti=0;i<printers.length;i++)System.out.println(printers[i].getName());
PrintServiceprinter=printers[0];
//job
DocPrintJobjob=printer.createPrintJob();
//document
BufferedImageimg=newBufferedImage(400,300,BufferedImage.TYPE_USHORT_555_RGB);
Graphicsg=img.getGraphics();
g.drawString(code,100,100);
ByteArrayOutputStreamoutstream=newByteArrayOutputStream();
ImageIO.write(img,"jpg",outstream);
byte[]buf=outstream.toByteArray();
InputStreamstream=newByteArrayInputStream(buf);
Docdoc=newSimpleDoc(stream,flavor,null);
job.print(doc,null);
}
catch(Exceptione)
{
e.printStackTrace();
}
}
//Mainmethod
publicstaticvoidmain(String[]args)
{
test("12345");
}
}
6. java打印类
java中调用本地系统上关联的打印机打印本地文件:
import java.io.File;
import java.io.FileInputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.swing.JFileChooser;
public class TestPrinter1 {
public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser();//创建打印作业
int state = fileChooser.showOpenDialog(null);
if(state == fileChooser.APPROVE_OPTION){
//File file = new File("D:/haha.txt");//获取选择的文件
File file = fileChooser.getSelectedFile();//获取选择的文件
//构建打印请求属性集
HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//设置打印格式,因为未确定类型,所以选择autosense
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
//查找所有的可用的打印服务
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
//定位默认的打印服务
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
//显示打印对话框
PrintService service = ServiceUI.printDialog(null, 200, 200, printService,defaultService, flavor, pras);
if(service != null){
try {
DocPrintJob job = service.createPrintJob();//创建打印作业
FileInputStream fis = new FileInputStream(file);//构造待打印的文件流
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);
job.print(doc, pras);
} catch (Exception e){
e.printStackTrace();
}
}
}
}
}
7. java打印机打印
直接生成pdf呀,现在浏览器都支持直接预览pdf并打印了,推荐XMReport,简单易用
8. java怎么打印集合
1. 首先我们打开电脑进入到桌面,然后找到excel图标点击打开。进入到软件界面之后,我们可以看到有多个工作表。
2.接下来我们就按住键盘上的ctrl键,然后使用鼠标选中想要打印的工作表。
3. 然后我们就可以看到我们选中的表已经集合了一个组合表。
4. 接下来我们只需要点击软件左上角的文件选项。
5. 然后我们会进入到文件界面,我们点击左侧菜单的打印选项。
6. 接下来我们就可以在右侧的界面中找到打印活动工作表选项,点击打开。
7. 然后我们就可以看到这么多张工作表经经组合成一张,接下来我们只需要点击打印按钮就可以。
8. 文档打印完成之后,我们只需要再次鼠标右击选中的标签,然后点击菜单中的取消组合工作表就可以了。
9. java打印到文件
最简单的jar包——直接输出hello
最终生成的jar包结构
META-INF
Hello.class
方法步骤
(1)用记事本写一个Hello.java的文件
1 class Hello{2 public static void main(String[] agrs){3 System.out.println("hello");4 }5 }
(2)用命令行进入到该目录下,编译这个文件
javac Hello.java
(3)将编译后的Hello.class文件打成jar包
jar -cvf hello.jar Hello.class
c表示要创建一个新的jar包,v表示创建的过程中在控制台输出创建过程的一些信息,f表示给生成的jar包命名
(4)运行jar包
java -jar hello.jar 这时会报如下错误 hello.jar中没有主清单属性
添加Main-Class属性
用压缩软件打开hello.jar,会发现里面多了一个META-INF文件夹,里面有一个MENIFEST.MF的文件,用记事本打开
1 Manifest-Version: 1.02 Created-By: 1.8.0_121 (Oracle Corporation)3
在第三行的位置写入 Main-Class: Hello (注意冒号后面有一个空格,整个文件最后有一行空行),保存
再次运行 java -jar hello.jar ,此时成功在控制台看到 hello ,成功
- 相关评论
- 我要评论
-