import javaxprintDoc;
import javaxprintDocFlavor;
import javaxprintDocPrintJob;
import javaxprintPrintService;
import javaxprintPrintServiceLookup;
import javaxprintServiceUI;
import javaxprintSimpleDoc;
import javaxprintattributeDocAttributeSet;
import javaxprintattributeHashDocAttributeSet;
import javaxprintattributeHashPrintRequestAttributeSet;
import javaxprintattributePrintRequestAttributeSet;
import javaxswingJFileChooser;
import javaawtFrame;
import javaioFile;
import javaioFileInputStream;
import javautil;
public class PrinterTest {
public static void main(String args[]){
JFileChooser fileChooser = new JFileChooser();
int state = fileChoosershowOpenDialog(null);
if(state == fileChooserAPPROVE_OPTION){
File file = fileChoosergetSelectedFile(); //获取选择的文件
//构建打印请求属性集
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//设置打印格式,因为未确定文件类型,这里选择AUTOSENSE
DocFlavor flavor = DocFlavorINPUT_STREAMAUTOSENSE;
//查找所有的可用打印服务
PrintService printService[] = PrintServiceLookuplookupPrintServices(flavor, pras);
//定位默认的打印服务
PrintService defaultService = PrintServiceLookuplookupDefaultPrintService();
//显示打印对话框
PrintService service = ServiceUIprintDialog(null, 200, 200, printService,
defaultService, flavor, pras);
if (service != null){
try {
DocPrintJob job = servicecreatePrintJob(); //创建打印作业
FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das); //建立打印文件格式
jobprint(doc, pras);
}catch(Exception e){
eprintStackTrace();
}
}
}
}
楼上的也真是的,将javadoc中的代码粘贴过来就混弄人家啊?
import javaxprintDocFlavor;
import javaxprintattributeHashPrintRequestAttributeSet;
import javaxprintPrintService;
import javaxprintPrintServiceLookup;
import javaxprintattributePrintRequestAttributeSet;
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavorBYTE_ARRAYPNG;
PrintService printService[] = PrintServiceLookuplookupPrintServices(flavor, pras);
package comibacxxadmcontroller;import javaxprint;import javaxprintattributeDocAttributeSet;import javaxprintattributeHashDocAttributeSet;import javaxprintattributeHashPrintRequestAttributeSet;import javaxswing;import javaioFile;import javaioFileInputStream;/ Created by Administrator on 2017/9/8 0008 /public class TestController { public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser(); //创建打印作业 int state = fileChoosershowOpenDialog(null); if(state == fileChooserAPPROVE_OPTION){ // File file = new File("D:/hahatxt"); //获取选择的文件 File file = fileChoosergetSelectedFile();//获取选择的文件 //构建打印请求属性集 HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); //设置打印格式,因为未确定类型,所以选择autosense DocFlavor flavor = DocFlavorINPUT_STREAMAUTOSENSE; //查找所有的可用的打印服务 PrintService printService[] = PrintServiceLookuplookupPrintServices(flavor, pras); //定位默认的打印服务 PrintService defaultService = PrintServiceLookuplookupDefaultPrintService(); //显示打印对话框 PrintService service = ServiceUIprintDialog(null, 200, 200, printService,
defaultService, flavor, pras); if(service != null){ try {
DocPrintJob job = servicecreatePrintJob(); //创建打印作业 FileInputStream fis = new FileInputStream(file); //构造待打印的文件流 DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);
jobprint(doc, pras);
} catch (Exception e) {
eprintStackTrace();
}
}
}
}
}
有时候我们需要判断scrollview滑动到了哪一个位置。下面这部分代码完整的说明了如何判断scrollvew滑动到哪一个位置:
[mw_shl_code=java,true]public
class MyScrollView extends ScrollView {
public MyScrollView(Context
context, AttributeSet attrs) {
super(context,
attrs);
handler = new Handler() {
public void handleMessage(Message msg) {
if (msgwhat == 1) {
/这样做为什么可以成功?
认真思考它。如果思考明白了,尤其是getMeasuredHeight()与getHeight方法有什么区别,那么整个View的绘制过程可以说你就十分清晰。如果确实不明白,留言吧!我会比较详细的说明的。
/
if
(viewgetMeasuredHeight() <= getScrollY() + getHeight()
&& getScrollY() != 0) {
onScrollListeneronButtom();
} else if (getScrollY() == 0) {
onScrollListeneronTop();
} else
onScrollListeneronScroll();
}
}
};
//
对事件的处理一定是对view刻画完毕之后才开始的,所以,getHeight是有值的
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent
event) {
view = getChildAt(0);
if (MotionEventACTION_UP == eventgetAction()) {
handlersendEmptyMessage(1);
}
//return false与return
true 是有区别的,如果返回false,scrollview是不是有滑动的。百度一下这两个有什么区别就知道为什么要这么做了
return false;
}
});
}
public MyScrollView(Context context,
AttributeSet attrs, int defStyle) {
super(context, attrs,
defStyle);
// TODO Auto-generated constructor stub
}
private OnScrollListener onScrollListener;
private
Handler handler;
private View view;
public void
setOnScrollListener(OnScrollListener onScrollListener) {
thisonScrollListener = onScrollListener;
}
}
/
这个小demo只是为了展示如何判断用户滑动到了scrollview的位置。还有很多优化性能的方法,比如新开线程和将一些代码放在新的方法中,在Activity里面调用它!
/[/mw_shl_code]
XML文件布局如下:[mw_shl_code=java,true]<xml version="10"
encoding="utf-8">
<orgchongshitestMyScrollView
xmlns:android=">
第一种,使用SAXReader
[java] view plain copy
InputStream in = DBHelpergetDBHelper()getContext()getResources()
getAssets()open("provincexml");
InputStream is = IOHelperfromInputStreamToInputStreamInCharset(in,"utf-8");
SAXReader sr = new SAXReader();// 获取读取xml的对象。
Document document = srread(is);
Element root = documentgetRootElement();
当然,使用这种方法还是比较麻烦的,因为需要引入dom4j的jar包。
第二种,直接使用XmlPullParser
我们查看XmlResourceParser源码的时候,就会发现XmlResourceParser实现了两个接口,AttributeSet和XmlPullParser,而实际上XmlPullParser就是帮助我们去读xml文件的。
当然还是需要获得inputstream流,但是优势就是不用引入jar包而已。
[java] view plain copy
public void test(InputStream in) {
XmlPullParserFactory factory;
try {
factory = XmlPullParserFactorynewInstance();
factorysetNamespaceAware(true);
XmlPullParser xpp = factorynewPullParser();
xppsetInput(in, "UTF-8");
int evtType = xppgetEventType();
// 一直循环,直到文档结束
while (evtType != XmlPullParserEND_DOCUMENT) {
switch (evtType) {
case XmlPullParserSTART_TAG:
String tag = xppgetName();
Systemoutprintln(tag);
break;
case XmlPullParserEND_TAG:
break;
default:
break;
}
//获得下一个节点的信息
evtType = xppnext();
}
} catch (Exception e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
java可以使用javax提供的print工具类,访问到系统的打印机基本信息,示例如下:
import javaioFile;
import javaioFileInputStream;
import javaxprintDoc;
import javaxprintDocFlavor;
import javaxprintDocPrintJob;
import javaxprintPrintService;
import javaxprintPrintServiceLookup;
import javaxprintServiceUI;
import javaxprintSimpleDoc;
import javaxprintattributeDocAttributeSet;
import javaxprintattributeHashDocAttributeSet;
import javaxprintattributeHashPrintRequestAttributeSet;
import javaxswingJFileChooser;
public class Printers
{
public static void main(String[] args)
{
HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavorINPUT_STREAMAUTOSENSE;
//查找所有的可用的打印服务
PrintService[] printService = PrintServiceLookuplookupPrintServices(flavor, pras);
for (int i =0; i<printServicelength ;i++ )
{
Systemoutprintln(printService[i]getName());
}
}
}
以上就是关于新手,问个幼稚问题,怎样得到默认打印机中的默认的纸张大小,他的宽度和高度全部的内容,包括:新手,问个幼稚问题,怎样得到默认打印机中的默认的纸张大小,他的宽度和高度、java 如何获取可用的打印机列表、java如何调用打印机打印图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)